我在使用findOne()
的ID查询文档时遇到问题。文档将使用自定义自动递增的整数id写入shorts
集合。得到的文件具有例如格式。
{ "_id": 13, "fullURL": "google.com" }
。当我尝试从集合中查询文档时,它返回null
:
// call queryUrlById(db, 13)
const queryUrlById = (db, id) => {
console.log(`searching id: ${id}`);
return new Promise((resolve, reject) => {
db.collection('shorts')
.findOne({ _id: id })
.then(found => {
console.log(`Found: ${found}`);
db.close();
resolve(found.fullURL);
})
.catch(err => {
db.close();
reject(err);
})
});
};
// In console:
// searching id: 13
// Found: null
同时,mongo shell
中的相同命令工作得很好:
> db.shorts.findOne({_id: 13})
{ "_id" : 13, "fullURL" : "google.com" }
到目前为止我尝试过的内容:
findOne()
{"_id": id}
其中没有一个像预期的那样成功。
答案 0 :(得分:1)
如果您安装了mongodb软件包,则可以使用以下2行来运行查询
var mongo=require("mongodb").MongoClient;
var ObjectID=require("mongodb").ObjectId;
findOne函数的语法应如下:
db.collection("shorts").findOne({_id:ObjectID(id)});
答案 1 :(得分:1)
查询中的id
需要从String转换为Number。
@str是第一个发布解决方案的人。谢谢大家!