MongoDb:如何在mongoDB中合并两个文件的内容?

时间:2016-06-09 18:31:37

标签: node.js mongodb

我允许用户使用FB跳过登录或登录。当用户登录时,我使用FB配置文件ID在用户集合中创建用户,当他跳过它时,我仍然使用一些唯一的客户端ID创建他的用户。在客户端应用程序中,用户可以将文章添加为书签并将其同步到服务器。用户可以在以后随时使用FB登录。一旦用户使用FB登录,我必须合并使用FB创建的用户和使用客户端ID创建的用户,以便他存储的数据完美映射。

我尝试了什么:

考虑用户跳过登录,我在USER集合中创建了一个用户。 用户在应用程序的生命周期之间使用FB登录,我将在我的收藏中搜索此FB ID。如果此ID不存在,我使用FB id更新跳过的用户文档。如果存在,我将从FB用户文档合并数据到跳过的用户文档并删除FB用户文档。

另一种方法:

在用户登录之前,我不会将任何书签同步到服务器。一旦他登录,我将立即同步所有数据。

进行此类操作的有效方法是什么?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您需要找到具有相同clientId的文档,并将facebook用户文档添加到其中。

您可以使用mongo update命令执行此操作,使用$set将新文档与现有mongo文档https://docs.mongodb.com/manual/reference/operator/update/set/合并

所以你的代码看起来像这样

db.collection("users").update(
   // first parameter is mongo query to match based on clientId
   { clientId: 100 },
   // second parameter is the document that will be merged using $set
   { $set: facebookDocument })

此结果将是与facebookDocument

的所有属性合并的现有文档