arrays - MongoDB - 仅投影数组中的匹配元素

标签 arrays mongodb meteor minimongo

如何从具有以下结构的 Mongo 文档的数组中获取一个元素:

{
 array : [ 
           {type: 'cat', name: 'George'}
           {type: 'cat', name: 'Mary'} 
           {type: 'dog', name: 'Steve'} 
           {type: 'dog', name: 'Anna'}  

         ]
}

例如我需要得到史蒂夫,在这种情况下结果必须是这样的:

{
 array : [ 
           {type: 'dog', name: 'Steve'}
 ] 
}

左右:{type: 'dog', name: 'Steve'}

我知道如何在发布时制作它,但我需要在整个数组可用的客户端制作它,我可以使用 forEach 从数组返回这个值,但我正在寻找更优雅的方式(使用 Mongo 查询)。

最佳答案

使用位置运算符($)仅投影第一个匹配的子文档。

db.t.find({"array":{"type":"dog", "name":"Steve"}},{"array.$":1})

使用 meteor,您必须坚持聚合,因为 positional 运算符不起作用:

db.t.aggregate([
{$match:{"array.type":"dog","array.name":"Steve"}},
{$unwind:"$array"},
{$match:{"array.type":"dog","array.name":"Steve"}}
])

关于arrays - MongoDB - 仅投影数组中的匹配元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50771727/

相关文章:

javascript - MongoDB Mongoose 聚合/数学运算

browser - Meteor 要求(客户端和服务器)

c# - mongodb C#比较没有时间的日期

arrays - 检查字典 Swift 的嵌套数组中的每个值

Javascript:从对象数组中提取对象,并将它们放入新数组中

php - 按日期列对多维数组进行排序,如果日期相同,则使用其他列值

使用 Spring Data 的 Mongodb 文档版本控制

meteor + CodeShip + 模数

javascript - 如何使用 React 在 Meteor App 中加载数据?

arrays - Swift:检查空数组