首页 > 解决方案 > 如何在 MongoDB C# 中将多个文档中的多个字段合二为一

问题描述

我想为我的应用添加社交功能。每个用户都可以向其他用户发送邀请,一旦其他用户批准了邀请,他们就是“朋友”。批准邀请的操作包括几个动作:

  1. 在其他用户朋友列表中添加每个 userId
  2. 删除发送邀请的用户的邀请
  3. 移除收到邀请的用户的批准邀请

我想将所有这些操作作为一个原子操作来完成。

目前,我正在这样做:

public class FriendsData
{
    public long _id;//UserId
    public long[] FriendsId;
    public long[] SentInvitations;
    public long[] AwaitingForApprovalInvitations;
}

public void ApproveInvitation(FriendsData userData, FriendsData friendData)
{
       m_friends.FindOneAndUpdate(string.Format("{{_id: {0}}} ", userData._id), Builders<FriendsData>.Update.AddToSet("FriendsId", friendData._id)
                                                                                                  .Pull("ActiveSentInvitations", friendData._id));

       m_friends.FindOneAndUpdate(string.Format("{{_id: {0}}} ", friendData._id), Builders<FriendsData>.Update.AddToSet("FriendsId", userData._id)
                                                                                       .Pull("AwaitingForApprovalInvitations", userData._id));
}

有一个更好的方法吗?我担心数据库会在两个更新操作之间发生变化。

标签: c#mongodb

解决方案


推荐阅读