2016-08-08 38 views
1

我正在運行下面的代碼,試圖在現有的子文檔下創建一個子文檔。基本結構是:通過索引將集合推送到子文檔?

用戶 - >(很多評論) - >(很多評級)。

評級對象是一個基本的JavaScript對象,具有結構;

rating: { 
    userId: "userId", 
    rating: 4 
} 

因此,對於索引[0]處的評論,我試圖用以下方式推送一個新評級;

db.getCollection('Users').update(
       {id: "user123", }, 
       { 
        $push: { 
         comments[0].ratings: rating 
        } 
       }) 

從蒙戈控制檯(只有設置爲「測試」的測試字符串等級)的回報,是;

Error: Line 5: Unexpected token [ 

我試圖繞過逗號圍繞評論[0];

db.getCollection('Insights').update(
        {id: "b5e5bf69-071b-4af2-99b2-5165b47499cb", }, 
        { 
         $push: { 
          "comments[0].ratings": "test" 
         } 
        }) 

這實際上是成功返回;

Updated 1 existing record(s) in 2ms 

但是,子文檔根本沒有出現。

有人能指出我在這方面的正確方向嗎?

+1

ypou應發佈您的用戶集合架構,其中包含評論和評級;對我們來說會更容易理解。 – sergiuz

回答

0

找到了答案;數組[索引]格式不適用於Mongo。相反,使用對象表示法。所以,而不是;

$push: {"comments[0].ratings": "test"} 

使用;

$push: {"comments.0.ratings": "test"} 
相關問題