如何使用MongoDB / Meteor将数组添加到现有数组中?这是数据库的结构。
我想在[depute]中添加一个新数组,而不是在外部添加新数组,就像现在一样。
到目前为止,这是代码。
import os
for path,dir,file in os.walk("."):
for fileNames in file:
if fileNames.endswith("json"):
fileName = str(os.path.join(path,fileNames))
print(fileName)
它在[depute]旁边添加了一个新数组[votes],而不是在[depute]中。
任何提示?
答案 0 :(得分:1)
您可以使用以下事实:可以使用索引作为属性来引用javascript数组。
因此,您使用object.property
变量创建loi
模式:
const selector = `votes.${loi}`;
哪个会为loi===0
选择器"votes.0
创建。
代码示例:
Meteor.methods({
'votes.insert': function (depute, loi, choix){
console.log('from votes.insert', depute, loi, choix)
const selector = `votes.${loi}`;
return Deputies.update(dpute, { $push: { [selector]: choix } });
},
});
示例输出:
votes === []
和choix === 5
将导致loi === 0
中的votes: [ [ 5 ] ]
votes === [[1]]
和choix === 5
将导致loi === 0
中的votes: [ [ 1, 5 ] ]
votes === [[1]]
和choix === 5
将导致loi === 1
中的votes: [ [ 1 ], [ 5 ] ] }
答案 1 :(得分:0)
您使用$push
的方式无法按预期工作。您需要指定要将某些内容推送到depute
,而是推进votes
,因此只需在父对象上创建votes
。
您正在寻找的语法是:
// create your votes array using your args loi & choix up here:
const votes = [ ... ]
// push the votes array in to depute here:
Deputies.update(depute,
{$push: {depute: votes}
);