如何在嵌套数组中追加新字段
how to upsert new field in a nested array
嘿,伙计们,我可以知道在嵌套数组中追加新字段吗?
例如像这样的嵌套数组。
"comments" : [
{
"name" : "john",
"title" : "Facebook",
"content" : "LOLOLOLOL",
"votes" : {
"up" : [ ],
"down" : [ ]
},
"date" : ISODate("2014-04-24T17:39:49.782Z"),
}
],
是否可以用名为"分数"的新字段来更新这个嵌套数组?像这样的东西。
"comments" : [
{
"name" : "john",
"title" : "Facebook",
"content" : "LOLOLOLOL",
"votes" : {
"up" : [ ],
"down" : [ ]
},
"date" : ISODate("2014-04-24T17:39:49.782Z"),
"scores": 50
}
],
我试过这种方法,但我似乎不能使它工作
// get up vote, down vote to calculate
posts.findOne({'comments': { $elemMatch: { permalink: data.permalink } } },function(err, data){
var ups = data.votes.up.length;
var downs = data.votes.down.length;
var marks = favourite(ups,downs);
var scores = {
"comments.$.scores":marks
}
// insert the scores in a nested array as new field.
posts.update({'comments': { $elemMatch: { permalink: data.permalink } } },{$set:scores},{upsert:true}, function(err, post) {
"use strict";
if (err) console.log(err)
});
});
db.yourCollection.update({comments: {$elemMatch:{ name:"john"} } }},{$set:{"comments.$.scores":50}},{multi:true});
然而,每个文档的嵌套数组中只有第一个匹配的元素会被修改
相关文章:
- 从按钮生成新的输入字段
- 每次按下按钮时添加新的文本字段
- 如何使用jQuery添加输入字段并将Ajax调用到新的输入字段中
- jQuery 选择错误:添加新的选择字段并对其进行组合时出现问题
- 在方法中动态声明新的“类字段” - 是否是好的做法
- 填写所有先前字段后,添加新的输入字段
- 使用 JQuery 在不涉及整页刷新的动态页面更改后访问/传播选择器到新的输入字段
- 如何在“”上动态地添加新的输入字段;keydown”;使用jQuery
- HTML表单可访问性:选项卡键焦点跳过新显示的字段
- 如何使用.keyup()添加新的输入字段
- 在新窗口中打开Instagram照片页面,向下滚动页面/关注新的评论字段
- JS:用新日期填充字段,从用户输入中减去x天
- 如何使用REST API用新值更新字段
- 在下拉菜单中选择选项后,添加新的输入字段
- JavaScript添加新的输入字段点击
- JavaScript在点击时生成新的输入字段
- Jquery不会将listener添加到新添加的字段中
- 如何从输入字段捕获文本值,并将其传递给新的输入字段
- 用AngularJS的方式给MongoLab添加一个新的模型字段
- 按递增顺序添加新的输入字段