嗨,我是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"
}
]
我希望得到他们的评论电视,但我没有找到一个例子来做到这一点,也许是不可能的?
答案 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/