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')});