MongoDB - 通过整数数组搜索文档

时间:2013-01-16 19:57:28

标签: arrays mongodb

我需要检索在数组中包含至少一个值的文档。我的文件结构是:

{ "_id": 3, 
"username": "111111", 
"name": "XPTO 1", 
"codes": [ 2, 4, 5 ], 
"available": true }


{ "_id": 4, 
"username": "22222", 
"name": "XPTO 2", 
"codes": [ 3, 5 ], 
"available": true }

我需要通过"代码进行查找"如果我搜索值&​​#34; 5",我需要检索其数组中包含此值的所有文档。

我试过使用#elemMatch但没有成功......

db.user.find({codes: {"$elemMatch": {codes: [2,8]}}}, {"codes":1})

我该怎么做?

提前致谢。

1 个答案:

答案 0 :(得分:8)

您可以像比较某些字段的值一样检查数组中的值。 所以,你需要这样做,而不使用$ elemMatch: -

  1. 如果要检查数组是否包含单个值5: -

    db.user.find({codes: 5}, {codes:1})
    

    这将返回所有文档,其中codes数组包含5

  2. 如果要检查数组是否包含给定值集之外的值: -

    db.user.find({codes: {$in: [2, 8]}}, {codes:1})
    

    这将返回包含2或8

  3. 的数组的文档
  4. 如果要检查数组是否包含列表中的所有值: -

    db.user.find({codes: {$all: [2, 5]}}, {codes:1})
    

    这将返回包含2和5的数组的所有文档。