[英]Projection mongodb not work - operator $in
我有一个数组:
let arr=["v1","v2","v3"];
这个数组是我在mongodb中查询的条件。 nodejs中的查询是:
cursor = await myCollection.find({"attribute":{ $in: arr}},{_id:0,title:1});
结果的投影中没有字段。 但是,当我更改$ in并使用$ all时,查询会带来标题字段。
请帮帮我
根据mongoDB文档,在$ in中,运算符选择字段值等于指定数组中任何值的文档。
根据mongoDB文档,在$ all中,运算符选择文档,其中字段的值是包含所有指定元素的数组。
在您的情况下,如果您使用$ all而不是$ in,则此查询将检查数组中的所有元素。
简单来说:
差异: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属性一样,如果任何值与array中的值匹配,那么您将得到相应的文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.