【发布时间】:2017-04-15 22:08:26
【问题描述】:
我正在尝试在 _id 字段上的两个集合之间进行 $lookup。它总是返回一个空对象。
和Mongodb $lookup Not working with _id完全相同的问题
但我已经实施了他的解决方案。它知道类型强制,我的 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" : [ ] }
我认为提及我的 User 集合没有用处,因为唯一有趣的字段是 _id
肯定遗漏了一个明显的东西,因为我不是mongo专家,所以我找不到它。
【问题讨论】:
-
“我”字段来自哪里?
-
什么“我”字段? ;) 对不起,一个错字。这是查找创建的字段:
u -
好的。您确定您的用户集合拼写为“用户”而不是“用户”吗?因为“会话”集合是小写的
-
我当然也试过
user -
哦,我找到了!复数模式是
users! mongodb 文档没有提及,他们的“inventory”示例不是复数(docs.mongodb.com/v3.2/reference/operator/aggregation/lookup)