Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在MongoDB中合并两个$exists.find_Arrays_Mongodb_Exists - Fatal编程技术网

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的新手,还在学习他们的语法规则……用第二行替换第一行。您必须创建一个具有两个属性的对象,而不是两个具有一个属性的对象。感谢您的解释和详细信息。它起作用了