【问题标题】:Why my mongdb $lookup does not work?为什么我的 mongodb $lookup 不起作用?
【发布时间】: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

标签: mongodb lookup


【解决方案1】:

我没有提到我正在使用 Mongoose。

当您创建集合时,Mongoose 会自动创建相对表 with the plural mode.

所以我的错误是引用from: "user" 而不是from: "users"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-01
    • 2018-12-20
    • 1970-01-01
    • 2021-04-27
    • 2019-07-20
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    相关资源
    最近更新 更多