我正在尝试使用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(...);
我将如何使其工作以便我可以根据需要设置索引?
答案 0 :(得分: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(...);
答案 1 :(得分:3)
对于后来偶然发现此问题的任何人,当前接受的答案并未解决代码中的实际问题,即用于设置索引的变量已被引用两次:
var indexString = "'body.0'";
正是由于这个原因,第一个查询起作用(仅引用一次),而第二个查询不起作用。将上述行更改为此将解决此问题:
var indexString = 'body.0';