![](/img/trans.png)
[英]Insert/Upsert to a Meteor Collection with Unacknowldeged Write Concern
[英]Updating/upsert/insert to a nested collection in Meteor & MongoDB
我有這個集合和架構:
Words = new Mongo.Collection("words");
WordsSchema = new SimpleSchema({
date: {
type: String
},
owner: {
type: String
},
entries: {
type: [Entry]
}
});
Entry = new SimpleSchema({
post: {
type: String
},
elapsed_time: {
type: Number
},
createdAt: {
type: Date
}
});
Words.attachSchema( WordsSchema );
我只是想通過 UPSERT(或使用 upsert = true 更新)向該集合添加條目,如下所示:
Words.update({
date: today,
owner: Meteor.userId()
}, {
$push: {
entries: { post: post, elapsed_time: elapsed_time, createdAt: new Date() }
}
}, {
upsert: true
});
即,如果日期 = 今天(存儲為 'YYYY-MM-DD')和所有者 = userId 的對象存在,它只會添加特定條目。
但是我做錯了,因為我收到錯誤:“需要輸入”。
非常感謝任何幫助或想法! 謝謝。
我不確定這有什么問題。 但我猜 type: [Entry] 不受簡單模式的支持。 所以在這里你可以嘗試這兩種方法來實現相同的功能。 1. Marge 兩種模式。
WordsSchema = new SimpleSchema({
date: {
type: String
},
owner: {
type: String
},
entries: {
type: Array
}
"entries.$": {
type: Object
},
"entries.$.post: {
type: String
},
"entries.$.verified": {
type: Boolean
},
"entries.$.verified": {
type: Boolean
}
});
2. 通過使用 $ 你可以分離兩種模式
WordsSchema = new SimpleSchema({
date: {
type: String
},
owner: {
type: String
},
entries: {
type: Array
}
"entries.$": {
type: Entry
}
});
Entry = new SimpleSchema({
post: {
type: String
},
elapsed_time: {
type: Number
},
createdAt: {
type: Date
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.