1

嗨,我是 mongodb 的新手,我来自 SQL Server,我有以下疑问如果 a 具有以下结构:

收藏:电视

"_id": ObjectId("123456abc"),
"brand": "Sony",
"model": "Bravia",
"price": 1000

收藏:电视评论

"_id": "_id": ObjectId("456789def"),
"tv": ObjectId("123456abc"),
"comments": [
         {
           "user": ObjectId("413212eop"),
           "text": "Very nice TV"
         }
]

我想在电视上看到他们的评论,但我找不到这样做的例子,也许不可能?

4

1 回答 1

3

MongoDB 和 SQL 的一个区别是 MongoDB 中没有JOINs。在 MongoDB 中建模数据的首选方法是将文档相互嵌入,而不是将它们分开并通过 ObjectId 引用它们。

您当前的处理方式将需要两次访问数据库,一次获取电视,一次获取评论。除非您打算在不会引用电视的地方引用评论(不太可能),否则您可以直接将评论放在电视文档中。现在,当您拉出电视文件时,您会“免费”获得评论。

{
    "_id": ObjectId("123456abc"),
    "brand": "Sony",
    "model": "Bravia",
    "price": 1000,
    "comments": [
             {
               "user": ObjectId("413212eop"),
               "text": "Very nice TV"
             }
    ]
}

请注意,我将引用留给了用户,而不是嵌入到 TV 文档中。在某些情况下,您需要执行多个查询来获取数据,因为嵌入不是正确的关系。

有关更多信息,请参见此处:http: //docs.mongodb.org/manual/core/data-modeling/

于 2013-08-26T18:35:24.090 回答