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

pla*_*oom 5 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 }
Run Code Online (Sandbox Code Playgroud)

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

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

db.user.find({codes: {"$elemMatch": {codes: [2,8]}}}, {"codes":1})
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

提前致谢.

Roh*_*ain 10

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

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

    db.user.find({codes: 5}, {codes:1})
    
    Run Code Online (Sandbox Code Playgroud)

    这将返回codes数组包含的所有文档5.

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

    db.user.find({codes: {$in: [2, 8]}}, {codes:1})
    
    Run Code Online (Sandbox Code Playgroud)

    这将返回包含2或8的数组的文档

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

    db.user.find({codes: {$all: [2, 5]}}, {codes:1})
    
    Run Code Online (Sandbox Code Playgroud)

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