Arrays mongodb查询数组的子集

Arrays mongodb查询数组的子集,arrays,mongodb,subset,keyword-search,Arrays,Mongodb,Subset,Keyword Search,我有一个字段\u keywords,它是一个字符串数组。我想获取\u关键字是查询数组的超集的文档 例如: db.article.insert({'_keywords': ['foo', 'foo1', 'foo2']}) 我想在查询['foo','foo1','foo2']的子集时检索此记录,例如:['foo'],['foo1','foo2'] 编辑: 比如: db.article.find({'_keywords': {$contains: array}}) 使用$all操作符: db.a

我有一个字段
\u keywords
,它是一个字符串数组。我想获取
\u关键字
是查询数组的超集的文档

例如:

db.article.insert({'_keywords': ['foo', 'foo1', 'foo2']})
我想在查询['foo','foo1','foo2']的子集时检索此记录,例如:['foo'],['foo1','foo2']

编辑: 比如:

db.article.find({'_keywords': {$contains: array}})

使用
$all
操作符:

db.article.find( { _keywords: { $all: [ 'foo1', 'foo2' ] } } );
来源:

简短回答:操作员。
要使用超集为['foo1','foo2']的数组查询文档,请使用:

db.article.find({'\u关键字':{$all:['foo1','foo2']})

,用于数组字段:

"$in:[...]" means "intersection" or "any element in",
"$all:[...]" means "subset" or "contain",
"$elemMatch:{...}" means "any element match"
"$not:{$elemMatch:{$nin:[...]}}" means "superset" or "in"

如何检索
\u关键字
包含给定查询数组中任何项的文档。类似于:
db.article.find({u关键字:{$any:['foo1','foo2']}}})
,它返回任何带有{u关键字包含我记得的'foo1'或'foo2'的文档,在这种情况下,您可以在
中使用
$in,例如:
db.article.find({u关键字:{$in:['foo1','foo2']})
。检查这是否正确。集合论的伟大分解!帮助我了解它,因为我需要字段是一个子集,这意味着在查询中传递的值是超集(最后的双否定查询)。