.in()和mongoose中的所有.()运算符有什么区别?

Eri*_*rik 6 mongoose mongodb

我只是好奇在mongoose Query中.in()和.all()方法之间的区别是什么?你能用一个简单的例子来解释吗?

udi*_*idu 16

以下是mongodb.org的解释:

$所有

$ all运算符类似于$ in,但不是匹配指定数组中的任何值,而是必须匹配数组中的所有值.例如,对象

{a:[1,2,3]}

将匹配

db.things.find({a:{$ all:[2,3]}});

但不是

db.things.find({a:{$ all:[2,3,4]}});

数组可以包含比$ all条件指定的元素更多的元素.$ all指定必须匹配的最小元素集.

在这里阅读更多关于mongodb运营商的信息


小智 9

$ all运算符检索包含我们传递的值子集的所有文档.子集可以是任何顺序.

$ in运算符检索包含我们传递的任一值的所有文档.

例如,考虑使用以下文档的集合"技能",

{ "Name" : "Balaji", "skills" : [ "Dancing", "Cooking", "Singing" ] }
{ "Name" : "Ramesh", "skills" : [ "Cooking", "Singing" ] }
{ "Name" : "Suresh", "skills" : [ "Dancing", "Singing" ] }
Run Code Online (Sandbox Code Playgroud)

db.skills.find({技能:{$ all:["烹饪","唱歌"]}})将仅返回包含舞蹈和歌唱技巧的文件,即Balaji和Ramesh.

db.skills.find({技能:{$ in:["烹饪","唱歌"]}})`将返回所有文件,因为所有文件都包含烹饪或唱歌.