我有一个类似的mongodb结构。
地点模型的结构
{.....
amenities: [
{
name: "wifi",
is_free: true
},
{
name: "projector",
is_free: false,
price: "50"
},
...........
...........
...........
]
.....}
我想查询一下,我想搜索一个地方,这个地方有一些设施,而不管price & is_free
字段。我如何在mongodb / mongoose查询中执行此操作。
我想要一些有wifi和等设施的地方列表 投影仪作为输出。
答案 0 :(得分:4)
db.places.find({$and: [{'amenities.name': 'wifi'}, {'amenities.name':'projector'}])
它会找到在数组['wifi', 'projector']
中指定所有amneties的地方。
希望它有所帮助。
答案 1 :(得分:1)
请尝试以下查询name
的一个选项:
db.places.find({amenities: {$exists: true}, 'amenities.name':'wifi'})
如果要检查name
的多个选项,也可以尝试此查询: -
var findQuery = {amenities: {$exists: true}, 'amenities.name':'wifi' , 'amenities.name':'projector'}
db.places.find(findQuery);
希望这会对你有所帮助。
答案 2 :(得分:0)
请尝试执行以下查询
db.places.find({
amenities : {
$exist : true
},
amenities : {
$elemMatch : {
name : {
$in : ['wifi', 'projector']
}
}
}
})
在上面提到的查询$exists运算符将检查文档中是否存在设施字段,$elemMatch运算符将匹配包含名称字段的设施数组以及以下值
(1)wifi
(2)投影仪