投影mongodb不起作用-运算符$ in

时间:2019-03-21 18:18:13

标签: node.js mongodb

我有一个数组:

let arr=["v1","v2","v3"]; 

此数组是我在mongodb中进行查询的条件。 nodejs中的查询是:

cursor = await myCollection.find({"attribute":{ $in: arr}},{_id:0,title:1});

结果中没有字段在投影中。但是,当我更改$ in并使用$ all时,查询将显示标题字段。

请帮助我

2 个答案:

答案 0 :(得分:0)

根据mongoDB文档,在$ in中,运算符选择字段值等于指定数组中任何值的文档。

根据mongoDB文档,在$ all运算符中,选择字段值是包含所有指定元素的数组的文档。

在您的情况下,如果您使用$ all而不是$ in,则此查询将检查数组中的所有元素。

答案 1 :(得分:0)

很简单的话:

差异:1

{ $in: ["v1","v2","v3"] }用作OR条件,而{ $all: ["v1","v2","v3"] }  符合AND条件。

使用$ in,如果v1,v2和v3中的任何值与“属性”值匹配,则您将获得结果文件。

使用$ all,如果来自v1,v2和v3的所有值必须都存在“属性”值,那么只有您才能获得结果文档。

差异:2

$ all仅应在array属性上使用,就好像您将对字符串属性使用$ all在数组中具有两个或多个值,那么始终得到空结果。

$ in对“数组”和“字符串”这两种类型的属性都很有用,例如在String属性的情况下,如果任何值与数组中的值匹配,那么您将得到相应的文档。