mongodb查询数组的子集

时间:2012-08-31 23:06:02

标签: arrays mongodb subset keyword-search

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

例如:

db.article.insert({'_keywords': ['foo', 'foo1', 'foo2']})

当我查询['foo','foo1','foo2']的子集时,我想要检索此记录,例如:['foo'],['foo1','foo2']

编辑: 类似的东西:

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

3 个答案:

答案 0 :(得分:11)

使用$all运算符:

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

来源:http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24all

答案 1 :(得分:10)

在MongoDb中,对于数组字段:

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

答案 2 :(得分:1)

简短回答:$all运营商。
要查询具有['foo1','foo2']超集的数组的文档,请使用:
db.article.find( { '_keywords': { $all: ['foo1', 'foo2'] } } );