【发布时间】:2016-01-26 00:13:52
【问题描述】:
给出以下 JSON 示例:
{
_id: "55ef729a66d78d24008xxxx",
name: "The right one"
items: [{
_id: "55ef729a66d78d24008xxxx",
return: true
}, {
_id: "55ef729a66d78d24008xxxx",
return: true
}, {
_id: "55ef729a66d78d24008xxxx",
return: false
}]
}
我想编写一个指定items.return = true 的查询,它应该返回:
{
_id: "55ef729a66d78d24008xxxx",
name: "The right one"
items: [// 2 element array]
}
我看到很多人建议使用$elemMatch,比如这个question,但正如它所说,这个
只返回第一个匹配项
但这只是返回在数组匹配items.return中有一些值的父文档。所以在上面的例子中,它将返回所有 3 个数组元素。
我想在返回时完全忽略这些数组值。我不想在客户端做,因为我用items _id做一个项目,如果我不需要它不想浪费这个项目。
【问题讨论】:
-
不同的问题,这个问题是指返回的父文档具有完全匹配的数组,我需要更改数组本身。
-
这与问题无关,而是针对问题提供的答案。那里有几个答案使用聚合框架只返回匹配的“元素”,因为这是唯一能够这样做的工具(除了 map reduce )。
标签: javascript arrays mongodb