我正在尝试在_id字段的两个集合之间进行$查找。它总是给我一个空的对象。
这与Mongodb $lookup Not working with _id
完全相同但我已经实施了他的解决方案。它知道类型coertion,我的id字段是完全相同的类型:Schema.ObjectId
这是我的会话集合:
var sessionSchema = new Schema({
user : { type: mongoose.Schema.ObjectId, ref: 'User' },
startDate : Date,
endDate : Date
});
和请求:
db.sessions.aggregate([{$project: {user:1}}, { $lookup : { from: "User", localField: "user", foreignField: "_id", as: "u" }} ]);
和结果:
{ "_id" : ObjectId("5697d6c810ad24b91b130df2"), "user" : ObjectId("5697d6c210ad24b91b130df1"), "u" : [ ] }
{ "_id" : ObjectId("5697d6d810ad24b91b130df3"), "user" : ObjectId("5697d6c210ad24b91b130df1"), "u" : [ ] }
{ "_id" : ObjectId("5697d70410ad24b91b130df4"), "user" : ObjectId("5697d6c210ad24b91b130df1"), "u" : [ ] }
{ "_id" : ObjectId("5697d71310ad24b91b130df5"), "user" : ObjectId("5697d6c210ad24b91b130df1"), "u" : [ ] }
{ "_id" : ObjectId("5697d71c10ad24b91b130df6"), "user" : ObjectId("5697d6c210ad24b91b130df1"), "u" : [ ] }
我认为提及我的用户集合并不合适,因为只有有趣的字段是_id
必须遗漏一个明显的东西,因为我不是蒙古专家,我找不到它。
答案 0 :(得分:0)
我没有提到我使用的是Mongoose。
当您创建集合时,Mongoose会自动创建相对表with the plural mode.
所以我的错误是引用from: "user"
而不是from: "users"