希望再次需要您的帮助,希望对这个项目来说,我在这里的答案将是最后一个。我已经看到这是一个相当常见的问题,但我已经尝试了另一个Stack Overflow post和Google Group之一的提示,但这些解决方案并未适用于我。通过ObjectId查询Mongoose Schema
我的代码是一个有点像:
mongoose = require('mongoose');
Schema = mongoose.Schema;
mongoose.connect(MONGO_SERVER);
ObjectId = Schema.ObjectId;
var RacesSchema = new Schema({
venue_id : { type: mongoose.Schema.ObjectId, ref: 'Venues' },
racetype : String
});
var races = mongoose.model('Races', RacesSchema);
function test() {
var MyObjectId = require('mongoose').Types.ObjectId;
queryVenue = new MyObjectId("50e3dcdbf30375180c078f64");
races.find({venue_id: queryVenue, racetype:'Test'})
.exec(function(err,data) {
}
test();
但我没有得到任何结果,我知道有。
非常感谢提前!
UPDATE
有最小化上面的代码示例,这个测试工作,如果我查询自身的字符串值,只是查询的的ObjectId是它失败了,我知道它的存在。
JSON UPDATE
以下是我在寻找:
{
"_id" : ObjectId("50e3dcddf30375180c078f85"),
"venue_id" : "50e3dcdbf30375180c078f64",
"racetype" : "A"
}
而且突然的,我相信我的答案已经很清楚了我。仅仅是因为venue_id实际上是一个字符串?如果是这样,我可以保持我的猫鼬模式的方式,并在做查找是一个字符串的点查询吗?或者我应该改变这些值的存储方式(从我开发的一个单独的.net应用程序中)插入为ObjectId的?
目前,对于另一个查询,当前的mongoose模式和数据库[实际设置]的方式,使用populate()可以很好地填充被引用表格(venue_id)的结果和该模型的方式目前正在设置中,唯一的区别就是上面的查询,我没有指定venue_id ...
谢谢。
什么是obj.venue_id? – 2013-02-21 13:23:36
你能提供一个能够再现问题的最小例子吗?如果没有文档和您使用的'obj.venue_id'值,它将很难提供帮助。 – JohnnyHK 2013-02-21 14:42:14
你也可以显示你试图找到的文档的JSON? – JohnnyHK 2013-02-22 13:48:08