我想使用$exists
查找包含某些字段的文档。我尤其对两个字段感兴趣:payload.fields.MDI_CC_DIAG_DTC_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().
我写错了什么?
您的查询有两个问题,请尝试以下一个问题:
db.getCollection("dtc")
.find({
"payload.fields.MDI_CC_DIAG_DTC_LIST": { $exists: true },
"payload.asset": { $exists: true }
})
.count();
问题:
find
。尝试一下:
/* ... */ true}}, {"payload.asset" /* ... */
/* ... */ true}, "payload.asset" /* ... */