mongodb查找所有数组值不以'org:'开头的文档

jck*_*111 1 mongodb

给出一些像这样的文件:

{
  _id: 'abc',
  extIds: ['org1:123', 'org2:xyz', 'org3:7q9']
},

{
  _id: 'def',
  extIds: ['org1:234', 'org2:tuv']
}
Run Code Online (Sandbox Code Playgroud)

我想匹配'org3'没有extId值的那些.我尝试了一个简单的正则表达式:

db.ext_ids.find({
  extIds: {$regex:'^(?!org3\:)'}
})
Run Code Online (Sandbox Code Playgroud)

但这匹配所有除'org3:...'之外的任何extId值的文档.
本质上,我需要针对数组中的所有值来评估正则表达式.

zer*_*323 7

怎么样:

db.ext_ids.find({ extIds: {$not: /^org3/ }})
Run Code Online (Sandbox Code Playgroud)

  • 有趣的是,如果你使用'{$ regex:'^ org3'}'语法尝试它会得到一个错误:不能使用$ not with $ regex,而是使用BSON regex类型 (3认同)