无法使用 mongoose 在 mongodb 中增加字段

Posted

技术标签:

【中文标题】无法使用 mongoose 在 mongodb 中增加字段【英文标题】:Unable to increment field in mongodb using mongoose 【发布时间】:2021-08-29 17:39:41 【问题描述】:

我在 mongodb 中有一个文档。此函数中的文档能够找到该文档并将其返回,但我无法终生使用此函数将计数字段更新为 1。如果有帮助,mongodb 中的当前文档是:


  _id: 60c5e4c3fba7edd232cf57e7,
  counterName: 'give_me_the_count',
  count: 1,
  updatedAt: 2021-06-13T11:47:02.575Z

代码将原始文档返回给 updatedCounter。但 updatedCounter.count 未定义。

  async function updateAndReturnNewCount() 
  let doc = await Counter.findOne( counterName : "give_me_the_count" )
  var count = doc.count
  let updatedCounter = await Counter.findOneAndUpdate( counterName : "give_me_the_count" ,
                            $inc: "count" : 1 ,
                            new: true,
                            useFindAndModify: false ,
                            function(err, doc) 
                              if (err)  console.log(err)
                              else console.log("success")
                            
                           );
  console.log("updateAndReturnNewCount fired")
  return updatedCounter.count

【问题讨论】:

【参考方案1】:

您的查询对于您想要执行的操作不正确。

试试这个:

await Counter.aggregate([
  
    $match: 
      counterName : "give_me_the_count"
    
  ,
  
    $set: 
      "count": 
        $add: [ "$count", 1 ] // Increment $count by one
      
    
  
])

Playground

编辑:

用法:

 async function updateAndReturnNewCount() 
  let doc = await Counter.findOne( counterName : "give_me_the_count" )
  var count = doc.count
  let updatedCounter = await Counter.aggregate([
  
    $match: 
      counterName : "give_me_the_count"
    
  ,
  
    $set: 
      "count": 
        $add: [ "$count", 1 ] // Increment $count by one
      
    
  
])
  console.log("updateAndReturnNewCount fired");
  console.log(updatedCounter);
  return count++;

【讨论】:

@Marko 我更新了我的分析器。向您展示了使用情况。

以上是关于无法使用 mongoose 在 mongodb 中增加字段的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 nestjs/mongoose 连接 mongoDB

runValidator 属性无法在 mongodb 上使用 mongoose 进行 upsert

无法在 Node.js 应用程序中使用 mongoose 对 MongoDB 数据库进行排序

无法使用 Node.js 和 Mongoose 插入 MongoDB

无法使用 mongoose、Node.js 将数据插入到 mongoDB 中的 Document 字段中

为啥我用mongoose将它保存在mongoDB中后无法获取数据库中的记录?