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

时间:2011-03-20 03:59:10

标签: 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']

如何进行这些搜索

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

2 个答案:

答案 0 :(得分:218)

试试这个:

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

答案 1 :(得分:5)

我的经验是,对于(2),以下解决方案比使用" $ all":

的解决方案快得多
db.blogpost.find({ $and: [ {tags: 'tag1'} ,{tags: 'tag2'} ] });

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