如果我有这个模式。。。
person = {
name : String,
favoriteFoods : Array
}
。。。其中FavoriteFoods
数组填充有字符串。我怎样才能找到所有人都有“寿司”作为他们最喜欢的食物使用猫鼬?
我希望有这样的东西:
PersonModel.find({ favoriteFoods : { $contains : "sushi" }, function(...) {...});
(我知道mongodb中没有$contains
,只是解释一下在知道解决方案之前我期望找到什么)
由于FavouriteFoods
是一个简单的字符串数组,您可以直接查询该字段:
PersonModel.find({ favouriteFoods: "sushi" }, ...);
但我也建议在模式中显式地使用字符串数组:
person = {
name : String,
favouriteFoods : [String]
}
相关文档可以在这里找到:https://docs.mongodb.com/manual/tutorial/query-arrays/
MongoDB中没有$contains
运算符。
你可以使用来自JohnnyHK的答案,因为这是可行的。与mongo包含的内容最接近的类比是$in
,使用它,您的查询如下所示:
PersonModel.find({ favouriteFoods: { "$in" : ["sushi"]} }, ...);
我觉得$all
在这种情况下更合适。如果你想找一个喜欢寿司的人,你可以:
PersonModel.find({ favoriteFood : { $all : ["sushi"] }, ...})
因为您可能希望筛选更多搜索,如:
PersonModel.find({ favoriteFood : { $all : ["sushi", "bananas"] }, ...})
$in
类似于OR,$all
类似于and。请查看:https://docs.mongodb.com/manual/reference/operator/query/all/