sou*_*mie 4 javascript mongodb mlab
我一直在努力通过MongoDB中的ID过滤我的记录而没有成功.问题在于$ oid
在MLAB上,我的记录如下:
{
"_id": {
"$oid": "57603891dcba0f7813102b3f"
},
"age": 10,
"name": "john",
"answer": "3",
}
Run Code Online (Sandbox Code Playgroud)
我的剧本如下:
mycollection.find({_id:"57603891dcba0f7813102b3f"},{},{},function(err, docs) {
console.log("record"+docs);
docs.each(function(err, doc) {
if(doc) {
console.log("record"+doc);
}
});
});
Run Code Online (Sandbox Code Playgroud)
它有什么问题?任何想法的家伙?
Kav*_*ali 11
您的脚本的问题是您正在尝试将普通字符串"57603891dcba0f7813102b3f"与ObjectId字符串进行比较
{
"$oid": "57603891dcba0f7813102b3f"
},
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Node.Js,那么您可以执行此操作
1)从mongodb包导入ObjectId api
var ObjectId = require('mongodb').ObjectID;
Run Code Online (Sandbox Code Playgroud)
2)在查询中将普通字符串转换为ObjectId
mycollection.find({_id:ObjectId("57603891dcba0f7813102b3f")},{},{},function(err, docs) {...}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,@ titi23发布的答案也有效.但我发现ObjectId转换是一种更清洁的方法.
您可以通过这种方式在mLab上搜索。
{
"_id": {
"$oid": "59b59b34852a9619b486634f"
}
}
Run Code Online (Sandbox Code Playgroud)
但是您的JavaScript代码应该是
uId = ObjectId("59b59b34852a9619b486634f")
User.findOne({"_id": uId}, function(err, user){
});
Run Code Online (Sandbox Code Playgroud)
尝试以下操作:-
mycollection.find({"_id.$oid":"57603891dcba0f7813102b3f"},{},{},function(err, docs) {
console.log("record"+docs);
docs.each(function(err, doc) {
if(doc) {
console.log("record"+doc);
}
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4568 次 |
| 最近记录: |