2014-06-25 78 views
1

我知道這已經被回答過,但由於某種原因,沒有任何解決方案對我有所幫助。所以我想請求一些幫助,看看能否發現我做錯了什麼。我有nedb運行,​​並且看起來像這樣一個.db文件(除去少數attributs,以使其更清晰):在nedb中更新數組元素

{ 
    "name":"Haj", 
    "members": [{"id":"x","name":"x"}], 
    "shops": [{"id":"123","name":"shopname","category":"xyz"}], 
    "_id":"XXXXX" 
} 

我想要做的是在一個店鋪編輯一個屬性,例如名稱。我試過這個,似乎是我看到很多的解決方案。但由於某種原因,它不適合我。

router.put('/vote', function(req, res) { 
    //hardcoded testing 
    req.db.groups.update(
     {"_id": "XXXXX", "shops.id": "123"}, 
     {$set:{"shops.$.name":"why wont you work"}}, 
     function(err, items){ 
     res.contentType('application/json'); 
     res.send('{"success":true}'); 
    }); 
}); 

如果我更改不在stores數組內的屬性(例如「name」:「Haj」),它將起作用。使用:

{$set:{"name":"this works"}} 

我希望有人能夠幫助我:)

+1

位置運算符不受nedb支持。如果您檢查了err參數,您實際上會看到關於在字段名稱中不支持'$'的錯誤。 –

回答

0

謝謝!正如Neil Lunn指出的那樣,它不被支持。我們通過檢索數據,然後通過代碼對其進行修改,然後使用修改後的數據更新文檔來制定解決方法。