我正在尝试使用集合的_id在Mongo上找到记录。我传递_id,我尝试过String和ObjectId,没有人工作。奇怪的是,使用findOne它返回一个完全不同的记录,具有不同的_id。如果我只使用find,使用where获取所有记录,它根本不会过滤任何内容。
如果我使用其他字段进行搜索,那么它可以正常工作并获取正确的记录,但我想使用_id字段进行搜索。这是我到目前为止所尝试的:
MyModel.findOne({where: {_id: new ObjectId("57926086e2a4ff010eeb8c83")}}).exec(function (err, record){
//record completely different
});
MyModel.findOne({where: {_id:"57926086e2a4ff010eeb8c83"}}).exec(function (err, record){
//record completely different
});
MyModel.findOne({id: new ObjectId("57926086e2a4ff010eeb8c83")}).exec(function (err, record){
//record completely different
});
MyModel.findOne({id:"57926086e2a4ff010eeb8c83"}).exec(function (err, record){
//record completely different
});
那么,我做错了什么?,我无法弄明白。我知道(想)我可以用“原生”来做,但这是唯一的方法???
谢谢!
答案 0 :(得分:2)
根据我对sails.js应用程序的体验,只有你的最后一个选项才有效。
id
而不是_id
(您的最后一个选项)。_id
和new ObjectId()
(第一个选项中的查询参数)。