我如何更新许多 mongodb

Posted

技术标签:

【中文标题】我如何更新许多 mongodb【英文标题】:How can I updateMany mongodb 【发布时间】:2022-01-18 21:22:18 【问题描述】:

我有三个聊天室,我想仅当用户与 members.user_id 匹配时才使用 MongoDB 更新文档。我不明白,它正在以相同的令牌更新到所有成员的设备。如果有人有想法?

这是我的 Node.js 代码:

const _id = req.params._id;
                const token = req.body.token;
                const user_id = req.body.user_id;
            
                try
                    const updateDevice = await ChatRoom.updateMany(
    "members.$[].user_id" : user_id,
    $set:"members.$[].devices":token)
                    res.send(updateDevice)
                catch(err)console.log(err)


    const mongoose = require('mongoose');
    
    const chatRoom_schema = new mongoose.Schema(
        name:
            type:Array,
            name:String,
        ,
        members:
            user_id:String,
            name:String,
            devices:String,
            type:Array,
            required:true
        ,
        lastMessage:
            content:String,
            createdAt:Date,
            type:Array,
            send_by:String,
            readBy:Array
        
    , 
        collection: "chatRoom"
    )
    module.exports = chatRoom =  mongoose.model("ChatRoom", chatRoom_schema);

【问题讨论】:

【参考方案1】:

根据架构,有一个 members 对象而不是 对象数组,因此只能访问特定元素 dot(.)使用运算符。如果您想访问数组中的任何元素或想更新对象数组中的特定对象值,则使用 $

试试这个查询来解决问题

ChatRoom.updateMany(
    "members.user_id" : user_id,
    $set:"members.devices":token)

让有这样的记录

    members=[
       
        "user_id":"1",
        "name":"DD",
        "type":"ADMIN"
       ,
       
        "user_id":"2",
        "name":"HH",
        "type":"CUSTOMER"
       
    ]

要将 user_id(2) 的类型从 CUSTOMER 更新为 ADMIN,$ 操作符会很有用。

查询可以是

    ChatRoom.updateMany("members.$.user_id" : 2,
    $set:"members.$.type":"ADMIN")

【讨论】:

你好!谢谢你,我猜对了。我已经做到了: const updateDevice = await ChatRoom.updateMany( "members.user_id" : user_id, $set:"members.$.devices":token) res.send(updateDevice) 现在可以工作了,真的,谢谢!!

以上是关于我如何更新许多 mongodb的主要内容,如果未能解决你的问题,请参考以下文章

mongodbmongodb提升

Mongodb 如何使用 C# 驱动程序更新许多文档

MongoDBMongoDB的一些操作命令

MongoDBMongodb——GridFS存储

mongoDBmongoDB副本集实战

MongoDBMongoDb数据结构