mongodb - 在多个索引处使用嵌套数组更新 Mongoose 文档

标签 mongodb mongoose database

我在使用嵌套数组更新架构以在数组的多行中具有一个 objectID 时遇到问题。如果可以,请帮忙!

我的模式是这样的:

var ProblemSchema = new Schema({
      data : "etc..."
      array1 : [{
        _id : { type: 'String' },
        array2: [{ type: Schema.Types.ObjectId}]
      }]}

我可以使用更新对象中的 $ 运算符轻松地将 objectId 添加到 SINGLE 嵌套数组,如下所示:

var query = {array1._id : ID};
var update = {$push : {'array1.$.array2' : objectId}};
Problem.update(query, update) 

但是,我希望能够在一个查询中将相同的 objectId 添加到多个 array2(即对应于不同的 array1 id),但是 $ 运算符只匹配查询的第一个匹配项,所以我不能这样做它按照上面概述的方式。

我也试图避免在服务器上有一个 for 循环(我意识到我可以找到()正确的文档然后使用一个 for 循环,在这个循环中我手动将 objectID push()到正确的 array2s 但解决方案涉及开销很大),谁能想到解决方案?

最佳答案

从 MongoDB 2.6 开始,无法通过单个更新查询来完成此操作。 $ positional operator是数组中第一个匹配元素的占位符。有一个 MongoDB 功能请求,用于更新数组的所有匹配元素,SERVER-1243 ,您可以同时进行跟踪。

关于mongodb - 在多个索引处使用嵌套数组更新 Mongoose 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24787114/

相关文章:

java - 何时在 Jersey 资源中使用 @Singleton

java - Junit 测试在使用数据库和实体管理器时随机失败

php - 如何显示每篇文章的所有评论(PHP 和 SQL)?

mongodb - MongoEngine - 在转换为 json 时如何有效地引用列表字段

node.js - 比较 Mongoose _id和字符串

mongodb - 仅在 MongoDB 中满足特定条件时分组

javascript - NodeJS cronjob 中未调用 Mongoose 查询回调

java - 从其他类访问 Spring Boot/MongoDB Controller 类

mongodb - 当我尝试为数据库创建新用户时自定义 mongo docker 引发错误

json - Mongoose 返回空对象,在 mongo shell 中工作