mongodb - 返回嵌套数组的所有元素匹配的文档
问题描述
我正在尝试编写一个查询来返回所有文档 wheredescrtratt: "Chemioterapia"
和nomemed: "null"
.
这是我尝试过的:
db.pazienti.find({terapie: {$elemMatch: {descrtratt: "Chemioterapia", nomemed: "null"}}})
然而,我编写的查询返回数组中至少一个元素terapie
匹配的文档,我想要的是返回terapie
数组中所有元素匹配的所有文档。
考虑到下面这 4 个输入文档,返回的文档应该只有第 2 个和第 4 个。我的查询返回所有 4 个文档,我应该如何修复它?
{
"codf": "001",
"nome": "Michelangelo",
"cognome": "Milani",
"terapie": [
{
"descrtratt": "Chemioterapia",
"nomemed": "null",
},
{
"descrtratt": "Chemioterapia",
"nomemed": "Busulfano",
}
]
}
{
"codf": "004",
"nome": "Gigio",
"cognome": "Battisti",
"terapie": [
{
"descrtratt": "Chemioterapia",
"nomemed": "null",
},
{
"descrtratt": "Chemioterapia",
"nomemed": "null",
}
]
}
{
"codf": "007",
"nome": "Giovanni",
"cognome": "Bomba",
"terapie": [
{
"descrtratt": "Chemioterapia",
"nomemed": "null",
},
{
"descrtratt": "Radioterapia",
"nomemed": "null",
}
]
}
{
"codf": "023",
"nome": "Luca",
"cognome": "Agostinelli",
"terapie": [
{
"descrtratt": "Chemioterapia",
"nomemed": "null",
}
]
}
解决方案
$ne
您可以在运算符中$elemMatch
使用否定条件$nor
,
db.pazienti.find({
$nor: [
{
terapie: {
$elemMatch: {
descrtratt: { $ne: "Chemioterapia" }
}
}
},
{
terapie: {
$elemMatch: {
nomemed: { $ne: "null" }
}
}
}
]
})
推荐阅读
- git - heroku App 与带有 git 的 buildpack 不兼容
- c# - NEST:创建别名并设置过滤器
- android - 使用 Dialog 时,只有创建视图层次结构的原始线程才能接触其视图
- oracle - 如何删除oracle utf文件中的输入
- c++ - 内部类引用的编译问题
- angular - 基于值变化的角度条件验证器
- javascript - 使用 Javascript 检测 URL 和重定向 URL
- ibm-mq - 如何在 ibm mq 中显示 curdepth 达到其最大深度的本地队列
- google-sheets-formula - Google 表格 - 基于 Today() 函数找不到我的查询函数有什么问题
- android - 如何在 ExoPlayer 中检测视频是垂直的还是水平的