node.js - 更新MongoDB中多个文档中的多个嵌入文档
问题描述
我正在尝试使用 nodejs 中的 mongoose 更新 MongoDB 中多个文档中的多个嵌入文档。
该文档的示例如下所示。
如您所见,在“exampleDocument ”中有一个嵌入式文档:“embededDoc”。
let exampleDocument =
{
_id: '1aa',
player_id: '9pp',
docUpdated: false',
embededDoc:
[
{
_id: '3eb',
embededDocUpdated: false,
timeDocWasSaved: '2019-04-30T08:45:50.349Z'
}
],
}
如何在多个“exampleDocument”文档中更新多个嵌入的“embededDoc ”文档。
在这个答案的帮助下,我知道如何使用单个命令更新多个文档,如下所示:
db.exampleDocument.update(
{ _id: { $in: ['1aa', '2bb', '3cc'] } },
{ $set: { docUpdated : yes } }
)
如果我想通过它们的 id 更新几个嵌入文档(embededDoc)怎么办?
例如,假设我们有三个 ' exampleDocument ' 文档,其 id 为:'1aa'、'2bb'、'3cc'。这些文档中的每一个都有五个嵌入文档,我想通过它们的 id 更新一些嵌入文档......是否可以使用一个命令来完成,或者我必须逐个文档来完成它?
如果可能的话,我真的很感激带有答案的代码示例,谢谢。
解决方案
试试这个
db.collection.update(
{ "embededDoc._id": "3eb" },
{ $set: { "embededDoc.$.embededDocUpdated" :true } }
)
推荐阅读
- arrays - 归一化,返回除以零错误
- reactjs - 使用 React Plaid Link 时格子事务 Webhook 未触发
- mysql - 查询在 MySQL 5.6 中工作,但不是 MySQL 5.7
- google-analytics - Google Analytics 中的 Vimeo 跟踪不发送事件
- c# - 将窗口置于前台拒绝在 Windows 10 中工作
- firebase - BigQuery - 最新事件表中的大量行
- java - Spring Boot 应用程序无法连接到 mongodb 集群,出现 NoSuchMethodError: com.mongodb.connection.DefaultClusterFactory.create
- node.js - 为什么我在 Lambda 上得到“未检测到对话流意图”,但它在 Google Cloud Functions 上运行良好?
- java - 允许用户删除他在spring boot中创建的实体
- javascript - html输入上的数字键盘