阵列的mongodb的查询子集(mongodb query subset of an array)

2019-07-31 07:22发布

我有一个字段_keywords这是一个字符串数组。 我想获得的文件,其中_keywords是超集的查询数组。

例如:

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

我想,当我查询[ '富', 'foo1', 'foo2的'],如子集以检索该记录:[ '富'],[ 'foo1', 'foo2的']

编辑:是这样的:

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

Answer 1:

使用$all操作:

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

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



Answer 2:

在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"


Answer 3:

简短的回答: $all操作。
查询与[“foo1”,“foo2的”]的超集阵列的文档,使用:
db.article.find( { '_keywords': { $all: ['foo1', 'foo2'] } } );



文章来源: mongodb query subset of an array