这是我的代码,我得到的文档为空值。但是在 findOne({'webpageid':docs[i]._id} 而不是 docs[i]._id 中,如果我传递了网页id,它就可以工作。并且我验证了文档具有所需的网页数据
// get all the records from the webpages table
var collection = db.get('webpages');
collection.find({}, function(e,docs){
// iterate over the webpage list
for (var i = 0; i < docs.length; i++) {
// check if results table has any record for this webpage
db.get('results').findOne({'webpageid':docs[i]._id}, function(err, doc)
{
if(err)
{
return;
}
console.log(doc);
});
};
});
以下是“网页”表中的内容
{
"_id" : ObjectId("549608e16ecb16dc3c4880e6"),
"name" : null,
"url" : "http://www.google.com",
"texttoverify" : null,
"interval" : null,
"websiteid" : null
}
{
"_id" : ObjectId("549609986ecb16dc3c4880e7"),
"name" : null,
"url" : "http://www.google.com",
"texttoverify" : null,
"interval" : null,
"websiteid" : null
}
{
"_id" : ObjectId("54960a916ecb16dc3c4880e8"),
"name" : "xyz",
"url" : "http://www.google.com",
"texttoverify" : "hello",
"interval" : "00:15:00.0000000",
"websiteid" : "02D7BE81-4E01-4347-BAE5-BA9A2D7EE11E"
}
这是我在“结果”表中的内容
{
"_id" : ObjectId("54985a1e69af082f9c477574"),
"webpageid" : "549608e16ecb16dc3c4880e6"
}
{ "_id" : ObjectId("54986f4e69af082f9c477575"), "name" : "name" }
{
"_id" : ObjectId("5498d10c69af082f9c477576"),
"name" : "name",
"webpageid" : "\"54960a916ecb16dc3c4880e8"
}
{
"_id" : ObjectId("5498d1f969af082f9c477577"),
"name" : "name",
"webpageid" : "54960a916ecb16dc3c4880e8"
}
感谢您的调查并感谢您的帮助。
最佳答案
您的webpageid 是字符串,而您搜索时使用的_ids 是ObjectId。您的查找结果与任何结果都不匹配,因为结果表中没有包含“webpageid”元素的 ObjectId 值的文档。
我认为有两种解决方案。
- 您可以在
results
集合中存储webpageid
元素的 ObjectId,而不是字符串。当然,其实现取决于这些文档如何进入集合。 您可以根据返回的 ObjectId 创建一个字符串变量。在循环内进行比较。例如,
... for(var i = 0; i < docs.length; i++) { var docId = docs[i]._id.toString(); // create a string db.get('results').findOne({'webpageid':docId}, function(err, doc) ...
如果您选择第二个选项,您可能需要了解为什么结果
中第二个文档的webpageid
值的开头有一个前导引号> 收藏。
"webpageid" : "\"54960a916ecb16dc3c4880e8"
最后,我不太了解您的需求,但您可能想重新考虑 MongoDB 作为解决方案。看来您正在创建类似 JOIN 的东西,而 MongoDB 的设计并不能很好地处理这种情况。
关于javascript - Mongodb find 不适用于 Objectid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27695652/