【发布时间】:2016-11-24 02:23:18
【问题描述】:
我正在尝试组合一个 MongoDB 查询,该查询将返回字段等于 JavaScript 数组中存在的值的结果。到目前为止,我已经将以下代码放在一起,但它不起作用。我希望集合中的 number 字段在 versions 数组中找到匹配项。我认为我的"list" 部分在第一个$project 下使用$map 是错误的。
//example data
var versions = ['v1', 'v2', 'v3'];
function getResults(versions) {
var query =
{
"db": "db-name",
"collection": "collection-name",
"query":
[
{
$match: {
time: getStartTime(),
}
},
{
$project:
{
number: "$number",
session_id: "$session_id",
round_id: "$_id",
"list": {
"$map": {
"input": { "$filter": {
"input": versions,
"as": "versions",
"cond": {
"$eq": [ "$$versions.value", "$number" ]
}
}},
"as": "versions",
"in": "$$versions.value"
}
}
}
},
{
$group:
{
_id: "$session_id",
number: { $first: "$list" },
rounds: { $addToSet: "$round_id" }
}
},
{
$project:
{
number: "$number",
rounds: "$rounds"
}
}
]
}
return query;
}
【问题讨论】:
-
能否提供样本输入数据和预期结果?
标签: javascript mongodb nosql