如何检查一个数组字段是否包含一个唯一值或MongoDB中的另一个数组?

我现在正在使用mongodb。

我有blogpost收集,并且blogpost有一个标签提交这是一个数组,例如

blogpost1.tags = ['tag1', 'tag2', 'tag3', 'tag4', 'tag5'] blogpost2.tags = ['tag2', 'tag3'] blogpost3.tags = ['tag2', 'tag3', 'tag4', 'tag5'] blogpost4.tags = ['tag1', 'tag4', 'tag5'] 

我怎样才能做这些search

  1. 包含“tag1”
  2. 包含['tag1','tag2'],
  3. 包含['tag3','tag4']中的任何一个

试试这个:

 db.blogpost.find({ 'tags' : 'tag1'}); //1 db.blogpost.find({ 'tags' : { $all : [ 'tag1', 'tag2' ] }}); //2 db.blogpost.find({ 'tags' : { $in : [ 'tag3', 'tag4' ] }}); //3 

我的经验是,(2)下面的解决scheme比“$ all”更快:

 db.blogpost.find({ $and: [ {tags: 'tag1'} ,{tags: 'tag2'} ] }); 

但说实话,我不是为什么。 如果有人知道,我会感兴趣的。