我目前正在使用mongoose模式,其中一些值包含列表。例如:
message: a = 5, b = 10
我正在寻找一种编写mongo查询的方法,该查询可以查找在这两个值之间至少有一个共享元素的其他文档。例如,如果我给出了一个
的餐馆列表var dinerSchema = mongoose.Schema({
restaurants: [String]
});
我想找到其他具有餐厅价值的文件,例如
[McDonalds, Burger King, Wendy's]
但不是
[Sonic, Taco Bell, Burger King]
我知道如果我想找到一个单一值的文件,我可以做一些像
这样的事情 [Red Lobster, Olive Garden, Legal Sea Foods]
将所有包含麦当劳的文件归还其餐馆列表。但是,我想找到任何包含某个列表中任何元素的文档。有没有办法查询?我不认为我可以只做“或”查询,因为我不知道我要查找的餐馆列表的大小,它可能会从查询更改为查询。
谢谢!
答案 0 :(得分:2)
使用$ in子句进行查找:
dinerModel.find({
'restaurants': { $in: [
'Sonic',
'Taco Bell',
'Burger King'
]}
}, function(err, docs){
if (err) {
console.log(err); // deal somehow
return;
}
console.log(docs);
}
});