2016-03-05 106 views
0

我有問題插入嵌套數組與Mongoose。 Database Schema插入陣列與貓鼬

我想插入一個AP到網絡陣列內部的特定網絡內的APList陣列。

我一直在嘗試使用:

var ap = { 
    MAC  : req.body.APMAC, 
    location : req.body.location 
} 
var query = { 
    name   : req.decoded.name, 
    'networks.ssid' : req.body.ssid 
} 

User.update(query, 
      {$push: {'APList' : ap}}, 
      {safe: true, upsert: true, new: true}, 
      function(err, data) { 
       res.json({ 
        success: true, 
        message: "Added AP" 
       }) 
      }) 

req.decoded.name來自一個JWT和發送的身體參數APMAC,位置& SSID。

這總是成功「添加AP」消息,但未更新APList陣列以包括在POST請求中發送的AP。

回答

0

$ positional operator一起應用$push運營商在更新到ap對象添加到嵌入式領域APList

$ positional operator將確定你正確的元素networks數組中沒有明確指定在陣列中的位置進行更新,因此您的最終更新語句應該是這樣的:

User.update(query, 
    { "$push": { "networks.$.APList": ap } }, 
    { "upsert": true, "new": true }, 
    function(err, data) { 
     res.json({ 
      success: true, 
      message: "Added AP", 
      data: data 
     }); 
    } 
); 
+0

不幸的是,這仍然不是招沒有工作。我回來的數據讀取:'{ 「成功」:真實, 「消息」: 「增加AP」, 「數據」:{ 「OK」:0, 「N」:0, 「n修改」 :0 } }' – admrply

+0

檢查你的查詢,使用一些帶有mongo shell的示例文件作爲調試提示進行測試。 – chridam