MongoDB:如何查找共享具有指定列表的列表元素的文档

时间:2015-11-22 02:39:28

标签: node.js mongodb mongoose

我目前正在使用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]

将所有包含麦当劳的文件归还其餐馆列表。但是,我想找到任何包含某个列表中任何元素的文档。有没有办法查询?我不认为我可以只做“或”查询,因为我不知道我要查找的餐馆列表的大小,它可能会从查询更改为查询。

谢谢!

1 个答案:

答案 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);
    }
});