我有一个字段_keywords,它是一个字符串数组。我想获取_keywords查询数组的超集的文档。
例如:
db.article.insert({'_keywords': ['foo', 'foo1', 'foo2']})
当我查询 ['foo', 'foo1', 'foo2'] 的子集时,我想检索此记录,例如:['foo'], ['foo1', 'foo2']
编辑:类似:
db.article.find({'_keywords': {$contains: array}})
我有一个字段_keywords,它是一个字符串数组。我想获取_keywords查询数组的超集的文档。
例如:
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' ] } } );
来源:http ://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24all
在 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"
简短的回答:$all操作员。
要查询具有超集 ['foo1', 'foo2'] 的数组的文档,请使用:
db.article.find( { '_keywords': { $all: ['foo1', 'foo2'] } } );