Node.js 搜索数组mongodb下的多个对象上是否存在提供id

Node.js 搜索数组mongodb下的多个对象上是否存在提供id,node.js,mongodb,Node.js,Mongodb,我的数据库具有此值 id: ObjectId(6a00683bac41ce1054774e7d), currentuserid: "69fc06dbf88c8c15042b4e36", dataset: Array 0: Object userid: "69fc06dbf88c8c15042b4e37" 1: Object userid: "69fc06dbf88c8c15042b4e38" 2: Object userid: "69fc06dbf88c8c15042b

我的数据库具有此值

id: ObjectId(6a00683bac41ce1054774e7d),
currentuserid: "69fc06dbf88c8c15042b4e36",
dataset: Array
 0: Object
   userid: "69fc06dbf88c8c15042b4e37"

 1: Object
   userid: "69fc06dbf88c8c15042b4e38"

2: Object
   userid: "69fc06dbf88c8c15042b4e39"
现在我想做一个查询,首先检查数组下是否存在“currentuserid”。如果值存在,则返回true,否则返回false。我是mongodb的新手。我还阅读了操作符中的$。我的问题是

Mydata.find({ dataset: { $in: [{userid: '69fc06dbf88c8c15042b4e36'}] } }, function(req, res){
  if(err){ console.log('Not Matched'); }
  else{ console.log('Matched') }
});
但我无法实现它

试试这个:

Mydata.findOne({dataset:{$elemMatch:{userid:'69fc06dbf88c8c15042b4e37'}}},function(err, data){
  if(err){ 
    throw err; 
  } else if(data){ 
    console.log('Matched');
  }else{
    console.log('Not Matched')
  }  
});
对于userid69fc06dbf88c8c15042b4e36,尝试以下操作:

Mydata.findOne({dataset:{$elemMatch:{userid:'69fc06dbf88c8c15042b4e37'}}},function(err, data){
  if(err){ 
    throw err; 
  } else if(data){ 
    console.log('Matched');
  }else{
    console.log('Not Matched')
  }  
});

对于userid69fc06dbf88c8c15042b4e36

.find({“dataset.userid”:“69fc06dbf88c8c15042b4e36”}),它将导致数据为空
$in
用于“参数数组”,而不是“检查数组”。MongoDB完全不在乎该值是否在数组中。它所需要的只是正确的“路径”。那么,先生,我怎样才能做到这一点呢?通过使用我实际给你的确切查询。阅读并理解原因。在那里时,请继续阅读所有有关查询的教程。
.find({“dataset.userid”:“69fc06dbf88c8cc5042b4e36”)
$in
用于“参数数组”,而不是“检查数组”。MongoDB完全不在乎该值是否在数组中。它所需要的只是正确的“路径”。那么,先生,我怎样才能做到这一点呢?通过使用我实际给你的确切查询。阅读并理解原因。当你在那里的时候,继续阅读所有关于查询的教程。不,它不会像那样。它总是在两种情况下运行,即“匹配”我的文档结构如下:{“_id”:ObjectId(“5a02e6bb6a0755f9e9aac29c”),“currentuserid:“69fc06dbf88c8c15042b4e36”,“dataset:[{“userid:“69fc06dbf88c8c15042b4e37”},{“userid:“69fc06dbf88c8c15042b4e38”},{userid:“69fc06dbf88c8c15042b4e39”}}可能类似于:var_userid=“69fc06dbf88c8c15042b4e36”Mydata.findOne({currentuserid:_userid,dataset:{$elemMatch:{userid:_userid}}}},函数(err,data){if(err){throw err;}else if(data){console.log('Matched');}else{else{console.log('Matched')('Not Matched')};不,它不会这样。它总是在两种情况下运行,即“匹配”我的文档结构如下:{“_id”:ObjectId(“5a02e6bb6a0755f9e9aac29c”),“currentuserid:“69fc06dbf88c8c15042b4e36”,“dataset:”[{“userid:“69fc06dbf88c8c15042b4e37”},{“userid”:“69fc06dbf88c8c15042b4e38”},{“userid”:“69fc06dbf88c8c15042b4e39”}}可能类似于:var{u userid=“69fc06dbf88c8c15042b4e36”Mydata.findOne({currentuserid:{u userid,dataset:{elemMatch userid:{u userid:{u userid}}),函数(err,数据){if(err){throw err if;}else if(数据){console.log('Matched');}其他{console.log('notmatched')});