这应该很简单。我有两个集合,其中一个集合包含两种类型的数据(名称,年龄),另一个集合应该只是将年龄值添加到数组中(没有重复)。
我像往常一样“开始”我的收藏品:
People = new Mongo.Collection('people')
Ages = new Mongo.Collection('ages')
现在我正在使用种子数据,但问题很容易扩展到我真正想要动态地向数组添加数据的时候。我这样播种:
Meteor.startup(function() {
if (People.find().count() === 0) {
[
{
name: 'John',
age: '24' //Yes, I want to store it as strings.
},
{ ... } //more data
]
.forEach(function(person) {
People.insert(person)
Ages.update({ $addToSet: {age: person.age}}) //Not working
})
}
})
最后一部分有什么不起作用。我想我认为$addToSet
会为我解决问题,因为文档说:
如果要更新的文档中没有该字段,则$ addToSet会创建 具有指定值作为其元素的数组字段。
现在我想我必须首先创建该字段,但我不确定在哪里或如何。我有一种强烈而强烈的感觉,我在这里忽略了一些非常简单的事情......
答案 0 :(得分:0)
现在,我看到你正在定义你的人物收藏品,但我没有看到你真正定义了" 人"或" 年龄"任何地方。也许这只是因为你如何格式化你的答案。
无论哪种方式,我都不能完全确定你会发生什么事情。据我所知,您需要每次循环选择文档,因为您想要更新它们。
这就是我在我正在处理的应用中做类似事情的方式:
Meteor.users.update({ _id: Meteor.userId() }, { $addToSet: { 'profile.viewedRequests' : this._id }});
在尝试更新单个文档之前,我选择了一个单独的文档。
它或者你需要切换到People.update。