在mongodb中构建查询

时间:2013-08-26 16:48:52

标签: mongodb

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

收藏:电视

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

收藏:tvcomments

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

我希望得到他们的评论电视,但我没有找到一个例子来做到这一点,也许是不可能的?

1 个答案:

答案 0 :(得分:3)

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

您目前的做事方式需要两次前往数据库,一次是获取电视,另一次是获取评论。除非您计划在不参考电视的地方引用评论(不太可能),否则您可以直接将评论放在电视文档中。现在,当您提取电视文档时,您可以“免费”获得评论。

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

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

有关详细信息,请参阅此处:http://docs.mongodb.org/manual/core/data-modeling/