将项目添加到 Mongoose 中的多维对象数组

Posted

技术标签:

【中文标题】将项目添加到 Mongoose 中的多维对象数组【英文标题】:Add item to multidimentional object array in Mongoose 【发布时间】:2020-01-12 12:13:27 【问题描述】:

我有这样的 Mongoose 用户模式,但我想将数组中的项目推送到我的对象之一中

这是架构示例

const userSchema = new Schema(

  tokens:[
    token: 
        type: String,
        requird: true
    
  ],
  tradings: 
    buy: 
        data: 
            type: Array
        
    ,
    sell: 
        data: 
            type: Array
        
    ,
    total: 
        data: 
            type: Array
        
    
  
)

我想插入一个对象const obj = trade: 234234, time: 345345 将数据放入购买中,因此插入后应如下所示:

"tradings": 
   "buy": 
      "data": [ trade: 234234, time: 345345 ]
   ,
   "sell": 
      "data": []
   ,
   "total": 
      "data": []
   

我正在使用一个函数来做,如下

Users.findOneAndUpdate(
     _id : req.body.id ,
    
        tradings : 
            $push: 
                buy : req.body.obj
            
        
    ,
    
        new: true
    ,
    function(error, doc)
        if(error)
            res.status(500).json(
                error: error
            )
        else
            res.status(201).json(
                message: req.body.data.id
            )
        
    
)

但是没有任何东西插入到数组中

【问题讨论】:

【参考方案1】:

您的tradings 字段具有以下结构:

tradings: 
  buy: 
    data: 
        type: Array
    
  ,
  ...

并且您想在data 中推送项目,而不是buy。而且,$push 具有以下形式:

 $push:  <field1>: <value1>, ...  

所以你的更新应该是:

Users.findOneAndUpdate(
 _id : req.body.id ,

    $push: "tradings.buy.data": req.body.obj
,...

【讨论】:

以上是关于将项目添加到 Mongoose 中的多维对象数组的主要内容,如果未能解决你的问题,请参考以下文章

使用 graphql-compose-mongoose 将对象添加到 mongodb 模型中的对象数组

如何使用 Node.js 和 Mongoose 将对象添加到嵌套数组

Mongoose 查找并创建多维数组

如果不存在,Mongoose 将多个对象添加到数组

使用 Mongoose 将项目推送到对象中的数组

Mongoose- 将数组中的数据搜索/过滤到具有特定项目的另一个数组中