Arrays 在MongoDB中合并两个$exists.find
我想使用Arrays 在MongoDB中合并两个$exists.find,arrays,mongodb,exists,Arrays,Mongodb,Exists,我想使用$exists查找包含某些字段的文档。特别是,我对两个字段感兴趣:payload.fields.MDI\u CC\u DIAG\u DTC\u LIST和payload.asset 如果我只想查找包含第一个文档的文档,这是我的查询: db.getCollection("dtc").find({"payload.fields.MDI_CC_DIAG_DTC_LIST": {$exists: true}}).count() 它给了我2265份文件 当我试图查找包含两个字段(如上所述)的文档
$exists
查找包含某些字段的文档。特别是,我对两个字段感兴趣:payload.fields.MDI\u CC\u DIAG\u DTC\u LIST
和payload.asset
如果我只想查找包含第一个文档的文档,这是我的查询:
db.getCollection("dtc").find({"payload.fields.MDI_CC_DIAG_DTC_LIST": {$exists: true}}).count()
它给了我2265份文件
当我试图查找包含两个字段(如上所述)的文档时,我使用以下代码:
db.getCollection("dtc").find({"payload.fields.MDI_CC_DIAG_DTC_LIST": {$exists: true}}, {"payload.asset": {$exists: true}}, {multi: true})count()
这给我带来了一个错误:
检索文档失败
[coches.dtc@ localhost:27017 [direct]] : An error occurred while retrieving documents!
Stacktrace:
|_/ java.lang.Exception: [coches.dtc@ localhost:27017 [direct]] : An error occurred while retrieving documents!
|____/ Illegal argument: Invalid number of arguments to find().
我的编码错了什么?那只是一个打字错误。您没有向查询中添加另一个属性,而是将其作为第二个参数传递给
find
试试这个:
/* ... */ true}}, {"payload.asset" /* ... */
/* ... */ true}, "payload.asset" /* ... */
您的查询有两个问题,请尝试以下问题:
db.getCollection("dtc")
.find({
"payload.fields.MDI_CC_DIAG_DTC_LIST": { $exists: true },
"payload.asset": { $exists: true }
})
.count();
问题:
。find({…},{…})
第一个是filter(所有针对集合的过滤器都在这里),第二个是projection(用于从结果文档中排除或包含某些字段)。在这里,您要传递3个参数。但一般来说,当涉及到node.js时,第三个可以是回调函数,但它与在数据库上执行的实际查询无关.find()
上没有称为{multi:true}
的东西multi
将作为第三个选项/arg传递给operations,以更新符合筛选条件的多个文档谢谢你能更具体一点,根据我的代码编辑你的答案吗?我是Mongo的新手,还在学习他们的语法规则……用第二行替换第一行。您必须创建一个具有两个属性的对象,而不是两个具有一个属性的对象。感谢您的解释和详细信息。它起作用了