node.js - 如何将 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
对象的语法。
解决方案
为了确保您不会覆盖 中的其余键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 是做什么的,如果更新找不到文档,那么它最终会插入一个。
推荐阅读
- javascript - 在不选择的情况下将 .txt 文件加载到 JavaScript 变量中
- sql-server - 需要其他方法来编写 SELECT 查询
- java - php windows中的java文件编译问题
- dji-sdk - 从 dji 无人机直播到本地服务器的最佳设置是什么?
- c++ - 对 std::string 和 std::vector 类方法的未定义引用错误
- ionic-framework - 如何在 ionic v3 中清除缓存
- xml - XSLT 选择除 3 之外的所有元素并将它们放在一个新字段中
- java - 变量无法解析(if else 语句中使用的变量)
- excel - 从单列到 3X8 表
- swift - 调用 @Environment 时收到错误“类 'Environment' 不能用作属性”