首页 > 解决方案 > 如何在猫鼬文档的内部数组中推送元素?

问题描述

我无法解决这个问题。帮我。
我的conversation架构:

const mongoose = require('mongoose');
const findOrCreate = require('mongoose-findorcreate')
const User = require('./user')
const Schema = mongoose.Schema;

const conversationSchema = new mongoose.Schema({
  groupName: {
    type: String,
    default: ''
  },
  messages: [Object],
  recipients:[{
      type: Schema.Types.ObjectId,
      ref: 'User'
  }],
  admins: [{
    type: Schema.Types.ObjectId,
    ref: 'User'
  }]
},{timestamps: true});
conversationSchema.plugin(findOrCreate)

const Conversation = mongoose.model('conversation', conversationSchema);

module.exports = Conversation;

当我更新消息和更新阅读器时。这里的问题我不能很好地更新读者:

await Conversation.findByIdAndUpdate(current._id, {$push: { 
                messages: { 
                    sender, 
                    text, 
                    date: dt,
                    remove: [],
                    readers: []
                } }}) 

我不能很好地解决这个问题,但我做不到。我想要push读者数组或数组中的 user._id remove。现在我尝试添加读者。

await Conversation.updateMany( { _id: _id }, {messages: { readers: {$not: {$elemMatch: {$eq: user}}} }}, { messages: { $push: {readers: user } } } )

标签: javascriptnode.jsmongodbmongoose

解决方案


推荐阅读