我有以下模式如何在Mongoose或MongoDB中編寫更新查詢?
var myschema = new schema({
username: { type: String, required: validationMessages.required, index: { unique: true }, lowercase: true },
siteConfig:{ type: Array}
});
我的文件將是這個樣子
{
"_id" : ObjectId("5411a6fb4bcc787927825dac"),
"username" : "admin"
"siteConfig" : [
{
"name" : "landing"
"page" : {
"name" : "home",
"sections" : [
{
"name" : "header",
},
{
"name" : "bodycontent",
},
{
"name" : "footer",
}
]
}
}
}
我想更新屬性「名」:在」頭」siteConfig-> page-> sections WHERE標準匹配如下
(「用戶名」:」管理」 & &‘siteConfig.name’:‘落地‘& &‘page.name’:’家’)
我已經trired用點符號和elematch,但我不不知道寫更新查詢的正確方法。
您需要閱讀[位置'$'](http://docs.mongodb.org/manual/reference/operator/update/positional/)運算符的文檔。而基本上告訴你的是,無論你的查詢條件如何,只有** fisrt **和「outer」數組元素纔會匹配。因此,如果您打算「更新」嵌入在另一個陣列中的嵌入式陣列的成員,那麼您需要重新考慮您的結構。除非在發佈更新時始終「知道」內部數組的位置,否則這將不起作用。 – 2014-09-23 10:24:27
對,我可以通過以下查詢進行更新(db.schema.update({username:「admin」,siteConfig:{$ elemMatch:{name:「landing」}}},{$ set:{「siteConfig.0 .page.sections。$。name「:」demo「}}))但是我需要檢查一個更多的條件是如果」Section。$。name「=」header「然後更新'section。$。name':」演示「 – 2014-09-23 13:58:53