Mongo查询以在对象数组中查找字段

时间:2018-10-03 15:47:06

标签: mongodb mongodb-query

我有一个名为collectionA的集合,其中包含类型对象的数组。

示例:

{
"_id" : ObjectId("123456"),
"tags" : [ 
    {
        "name" : "Bob D",
    }, 
    {
        "name" : "another name",
    }
    ...

如何编写与对象数组中的名称匹配的查询? 我已经尝试过db.getCollection('collectionA').find({ "name": "Bob D}),但这没用。

1 个答案:

答案 0 :(得分:1)

要过滤嵌套数组,您可以使用$elemMatch(作为投影):

db.col.find({ "tags.name": "Bob D" }, { tags: { $elemMatch: { name: "Bob D" } } })

返回第一个匹配数组元素,或使用$filter获取tags数组的多个匹配元素:

db.col.aggregate([ { $addFields: { tags: { $filter: { input: "$tags", as: "tag", cond: { $eq: [ "$$tag.name", "Bob D" ] } } } } } ])