$setIsSubset 用于 Mongo 中的常规查询
$setIsSubset for regular queries in Mongo
我希望为 MongoDB 中的常规(即非聚合)查询执行 $setIsSubset
http://docs.mongodb.org/manual/reference/operator/aggregation/setIsSubset/ 的等效操作。我该怎么做?
假设我有文件
{ 'x' : ['A', 'B'] }
{ 'x' : ['A', 'D'] }
还有那个
filter = ['A', 'B', C']
我想做一个
find({"x" : {'$setIsSubSet':filter}})
并期望只回来
{ 'x' : ['A', 'B'] }
似乎大多数条件命令都匹配 any 而不是 all。 我也希望它是一个子集,所以看起来 $and
和 $all
不会匹配 [A,B]
到 [A,B,C]
.
您可以在 shell 中尝试以下操作:
var filer = ['A', 'B', 'C']
db.coll2.find({x: {"$not": {"$elemMatch": {"$nin" : filer }}}})
输出
{ "_id" : ObjectId("54f4d72f1f22d4a529052760"), "x" : [ "A", "B" ] }
我希望为 MongoDB 中的常规(即非聚合)查询执行 $setIsSubset
http://docs.mongodb.org/manual/reference/operator/aggregation/setIsSubset/ 的等效操作。我该怎么做?
假设我有文件
{ 'x' : ['A', 'B'] }
{ 'x' : ['A', 'D'] }
还有那个
filter = ['A', 'B', C']
我想做一个
find({"x" : {'$setIsSubSet':filter}})
并期望只回来
{ 'x' : ['A', 'B'] }
似乎大多数条件命令都匹配 any 而不是 all。 我也希望它是一个子集,所以看起来 $and
和 $all
不会匹配 [A,B]
到 [A,B,C]
.
您可以在 shell 中尝试以下操作:
var filer = ['A', 'B', 'C']
db.coll2.find({x: {"$not": {"$elemMatch": {"$nin" : filer }}}})
输出
{ "_id" : ObjectId("54f4d72f1f22d4a529052760"), "x" : [ "A", "B" ] }