如何获取 Model.countDocuments() 函数返回的文档计数并将其设置为猫鼬中的其他字段

Posted

技术标签:

【中文标题】如何获取 Model.countDocuments() 函数返回的文档计数并将其设置为猫鼬中的其他字段【英文标题】:How to get documents count returned by Model.countDocuments() function and set it to some other field in mongoose 【发布时间】:2021-01-06 18:48:39 【问题描述】:

我想在更新(更新查询)集合时将以下 mongoose 函数返回的总“计数”设置到不同 mongodb 集合中的其他字段。

// 从用户集合中获取计数

   User.countDocuments(age:$gte:5, function (err, count)  
       if (err) 
            console.log(err) 
        else 
            console.log("Count :", count) 
         
    ); 

//将count设置为StatChartMonitor集合中的字段viewCount如下

var user_id = '5e218e6811a54db030ff8f7b'; 
StatChartMonitor.findByIdAndUpdate(user_id,  viewCount: count, 
function(err, docs)  
    if (err) 
       console.log(err) 
     
    else 
        console.log("Updated User : ", docs); 
     
); 

猫鼬有什么方法可以获取该计数(整数)值并在更新查询中设置它?

【问题讨论】:

显示更新查询 var id = '5e218e6811a54db030ff8f7b'; StatChartMonitor.findByIdAndUpdate( id, viewCount: count , function (err, docs) if (err) console.log(err) else console.log("Updated User : ", docs); ); 我没明白,你想知道如何使用countDocuments然后更新? 我想获取“用户”集合中与条件年龄匹配的文档的计数或总数:$gte:5。然后使用此计数值,我必须更新该字段在“StatChartMonitor”集合中称为“viewCount”为 StatChartMonitor.findByIdAndUpdate(id, viewCount: count ) 请用所有信息编辑问题 【参考方案1】:
async function countAndUpdate() 
  const count = await User.countDocuments(age:$gte:5

  await StatChartMonitor.findByIdAndUpdate(id,  $set:  viewCount: count  )

您需要添加关键字 asyncawait 以等待 Promise 被执行并访问 countDocuments 结果。

之后,您可以使用 $set

找到ByIdAndUpdate

【讨论】:

感谢您的回复。但是很抱歉这个函数不会更新字段 viewcount。“id”应该传递给 findByIdAndUpdate( viewCount: count ) 答案编辑了 id 和 $set 作为更新问题 没有运气对不起。我在***.com/questions/64051687/… 创建了带有完整问题陈述的单独线程。请帮忙

以上是关于如何获取 Model.countDocuments() 函数返回的文档计数并将其设置为猫鼬中的其他字段的主要内容,如果未能解决你的问题,请参考以下文章

java如何获取当前时间,java如何获取ip地址

JS如何获取OBJECT的值

js如何获取某一个元素,如果获取不到就继续获取,直到获取到后停止获取?

Groovy如何获取访问地址

js如何获取时间

js如何获取地址栏加密参数