3

我正在尝试使用 mongoose 更新 mongodb 数组中特定索引处的元素。

db.Comment.findOneAndUpdate(
    {_id: '51fc9c329e87bf0000000001'},
    {$set: { 'body.0' : 'Comment Body'}}).exec(...);

这很好用,但是,当我使用变量来设置索引时,它似乎不起作用。有谁知道为什么?

    var indexString = "'body.0'";

    db.Comment.findOneAndUpdate(
        {_id: '51fc9c329e87bf0000000001'},
        {$set: { indexString : 'Comment Body'}}).exec(...);

以及如何让这个工作,以便我可以根据需要设置索引?

4

2 回答 2

3

改用对象:

var myIndex = { 'body.0' : 'Comment Body'};
var myIndex1 = { 'body.1' : 'xxx'};

db.Comment.findOneAndUpdate(
    {_id: '51fc9c329e87bf0000000001'},
    {$set: myIndex}).exec(...);

db.Comment.findOneAndUpdate(
    {_id: '51fc9c329e87bf0000000001'},
    {$set: myIndex1}).exec(...);
于 2013-08-10T00:04:59.193 回答
3

对于以后偶然发现此问题的任何人,当前接受的答案并未解决代码中的实际问题,即用于设置索引的变量已被引用两次

var indexString = "'body.0'";

正是由于这个原因,第一个查询有效(仅引用一次),而第二个查询无效。将上述行更改为此将解决此问题:

var indexString = 'body.0';
于 2016-03-18T16:48:40.170 回答