猫鼬:如果存在更多属性,则查找对象,然后查询

时间:2018-10-09 10:21:29

标签: mongodb mongoose mongodb-query

我想基于现有的子属性查找对象,而忽略查询信息中不存在的子属性。

要查找的对象:

{
     _id: '123'
     attributes: {
          type: ['city'],
          name: ['Paris'],
          numberOfInhabitants: [1000000]
     }
}

查询信息:

{
     attributes: {
          type: ['city'],
          name: ['Paris']
     }
}

当前,仅当我在要查找的对象上没有numberOfInhabitants时,我的查询才会匹配。 (节点为猫鼬模式)

Node.find({
     attributes: {
         type: ['city'],
         name: ['Paris']
     }
})

我应该如何构造查询?

非常感谢。

1 个答案:

答案 0 :(得分:0)

属性是主文档中的嵌入式对象,因此我们可以像这样直接查询类型字段。下面的查询将返回所有类型为 city

的属性

db.getCollection('test').find({'attributes.type' : 'city'})

因此,在您的情况下查询将是:

db.getCollection('test').find({'attributes.type' : 'city', 'attributes.name' : 'Paris'})