是否可以在Mongoose(MongoDB)上引用子文档?

时间:2015-03-11 20:35:32

标签: javascript node.js mongodb mongoose

我说这个名为users的集合:

"_id" : ObjectId("5371251fdd16203032846873"),
"address" : [
    {
        "_id" : ObjectId("537505bb6c12480d0b2038c6")
        "type" : "Main",
        "street" : "Bla bla street",
        "number" : "132",
        "complement" : "",
        "district" : "Bla bla district",
        "zipcode" : "somezipcode",
        "state" : "BLA",
        "city" : "Bla bla city"
    }
]

然后我有一个名为orders的地方,我想拥有address字段,我希望在其中存储ID,以便我可以使用Mongoose的{{1} } {方法}集合populate彼此的集合,如下所示:

join

这可能吗?

1 个答案:

答案 0 :(得分:0)

您不会将ref存储到该地址,而是将参考号存储到“用户”中。

user: {type: Schema.Types.ObjectId, ref: 'User'}

因为地址在用户密钥下。然后,您可以通过order.user.address检索地址,该地址仍然只有一个填充,因为地址已嵌入用户文档中。

我也不会养成这些联接的习惯,因为他们并非如此。他们只是数据库的第二次往返,所以你应尽可能避免这些瘟疫。

替代解决方案可能只是将userAddress作为嵌入式文档存储在order模型上,如果您需要经常访问