javascript - MongoDB 和 Meteor - 插入嵌套数组的查询不起作用,没有抛出错误

标签 javascript arrays mongodb meteor database

我正在尝试将数据推送到 Mongo 集合内的嵌套数组中。我在这里遵循了 Mongo 文档 http://docs.mongodb.org/manual/reference/operator/update/positional/ ,但没有运气进入数组。没有错误或异常被抛出,语法看起来是正确的...

在这个例子中,我尝试通过将新字符串插入 idArr 来更新标题为 'Board One'buyer.boards > 数组。我的查询有问题吗?

Mongo 合集

// User Document from Meteor.users Collection:
{
    _id: 'userIdqwerty',
    buyer: {
        boards: [
            {
                title: 'Board One',
                idArr: ['id123', 'id456', 'id678']
            },
            {
                title: 'Board Two',
                idArr: ['idABC']
            },
            {
                title: 'Board Three',
                idArr: ['id12345678', 'idqwertyuu']
            },
        ]
    };
}

Javascript

var options = {
    boardTitle: 'Board One',
    newId: 'idZjodFsp',
    userId: 'userIdqwerty'
};

Meteor.users.update(
    { 
        _id:options.userId, 
        'buyer.boards.$.title':options.boardTitle 
    },
    { $push: { 
        'buyer.boards.$.idArr':options.newId }
    }
);

最佳答案

update 函数的 query 参数中删除位置运算符 ($)。

Meteor.users.update(
    { 
        _id:options.userId, 
        'buyer.boards.title':options.boardTitle 
    },
    { $push: { 
        'buyer.boards.$.idArr':options.newId }
    }
);

来自文档:

db.collection.update(
   { <array>: value ... },
   { <update operator>: { "<array>.$" : value } }
)

update 参数中应使用位置运算符,query 参数中应not。这只会更新具有匹配的 title 的第一个 boards 对象。

关于javascript - MongoDB 和 Meteor - 插入嵌套数组的查询不起作用,没有抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27804441/

相关文章:

javascript - VueJS 数据绑定(bind)对象样式不起作用

javascript - 如何在JSP字符串变量中插入JavaScript变量

javascript - 对象不是函数,在 jspdf 调用中

javascript - 如何确定对象是否在数组中?

java - 是什么导致了 java.lang.ArrayIndexOutOfBoundsException 以及如何防止它?

performance - 如何使用 mongostats 诊断 mongodb 内部的性能问题

javascript - 如何在 turn.js 中更改动画速度?

c++ - C++ 数组中未默认初始化的索引范围

node.js - 在Mongoose中填充后查询

spring - spring-data-mongo 文档中的计算字段