我想基于现有的子属性查找对象,而忽略查询信息中不存在的子属性。
要查找的对象:
{
_id: '123'
attributes: {
type: ['city'],
name: ['Paris'],
numberOfInhabitants: [1000000]
}
}
查询信息:
{
attributes: {
type: ['city'],
name: ['Paris']
}
}
当前,仅当我在要查找的对象上没有numberOfInhabitants
时,我的查询才会匹配。 (节点为猫鼬模式)
Node.find({
attributes: {
type: ['city'],
name: ['Paris']
}
})
我应该如何构造查询?
非常感谢。
答案 0 :(得分:0)
属性是主文档中的嵌入式对象,因此我们可以像这样直接查询类型字段。下面的查询将返回所有类型为 city
的属性 db.getCollection('test').find({'attributes.type' : 'city'})
因此,在您的情况下查询将是:
db.getCollection('test').find({'attributes.type' : 'city', 'attributes.name' : 'Paris'})