首页 > 解决方案 > 如何将 Hashmap 插入 MongoDB 文档?

问题描述

我正在尝试使用 MongoDB 构建好友列表。

这就是我目前的结构:

{
    "_id": {
        "$oid": "601c570da04b75fabcd2705d"
    },
    "user_id": 1,
    "friendslist": {
         3 : true
     }
}

如何创建一个在我的 Hashmap 上执行 put 的查询(哈希图是"friendslist"),并且朋友的 id 的键是 3,而 true 标志是待处理的朋友请求的状态。(真意味着他们是朋友,假是待处理的朋友请求)

这是我目前拥有的:

const upsertFriendId = db.collection('friends')
        .updateOne(
            { user_id: userId },
            { $set: { ???? : ????} },
            { upsert: true }
        );

我无法弄清楚我需要放入$set对象的语法。

标签: node.jsmongodb

解决方案


为了确保您不会覆盖 中的其余键friendlist,您可以进行更新,例如

const mongoFriendKey = `friendlist.${/* FRIEND_ID_VARIABLE_GOES_HERE */}`;

const upsertFriendId = db.collection('friends')
        .updateOne(
            {
               user_id: userId
            },
            {
               $set: 
                 {
                    [mongoFriendKey] : true
                 }
            },
            { upsert: true }
        );

在上面,将 替换/* FRIEND_ID_VARIABLE_GOES_HERE */为朋友 id 变量。这样做,查询将查找具有该特定 ID 的朋友,然后如果未找到,它将尝试将其设置为true,而不覆盖您的整个friendlist对象。

另外,我希望你知道 upsert 是做什么的,如果更新找不到文档,那么它最终会插入一个。


推荐阅读