我创建了两个集合"Users"answers"Posts"。
用户文档结构如下:
{
"_id": {
"$oid": "54dde0e32a2a999c0f00002a"
},
"first_name": "Vamsi",
"last_name": "Krishna",
"email": "vamshi@test.com",
"password": "5f4dcc3b5aa765d61d8327deb882cf99",
"date_of_birth": "1999-01-05",
"gender": "male",
"status": "Active",
"date_created": "2015-02-13 12:32:50"
}
而posts文档结构为:
{
"_id": {
"$oid": "54e1a2892a2a99d00500002b"
},
"post_description": "Test post 1",
"posted_by": {
"id": "54dde0e32a2a999c0f00002a",
"first_name": "Vamsi",
"last_name": "Krishna",
"gender": "male"
},
"posted_on": "2015-02-16 08:55:53",
"comments": [],
"likes": {
"count": 0,
"liked_by": []
}
}
我的问题是,当用户更新他的信息时,它应该反映在任何地方,比如发布者、评论者和点赞者。我该如何做到这一点?
我在用PHP。
谢谢!!
Mongodb没有类似于sql on update cascade
的概念,因此您必须在应用程序中执行此操作(无论何时更新用户信息,都要更新其他集合中与该用户相关的所有其他文档)。
正如您可能已经猜到的,当有很多这样的文档时,这是非常低效的,这意味着您的模式是糟糕的。只要在文档中有一个userID
,它就会链接到用户的收藏。