2014-05-11 68 views
0

我想插入文檔到一個特定的ID(由mongoDB生成的默認ID),就像我們在mysql(INSERT WHERE id =「985264」)中所做的那樣。在MongoDB中插入文檔到特定的ID

app.get('/', function(req , res){ 
db.facebook.insert({ 
_id:985264, 
username: "Solomon.david", 
status : "i love to code and eat", 
comments: [ 
{ 
    user : "jackson", 
    comment: "even me " 
} 
] 
    }, function(err,docs){ 
res.render('won.html');  
    }); 
}); 
+0

我從來沒有見過'INSERT WHERE'之前,除非你正在描述一個INSERT INTO ... SELECT'。你是什​​麼意思「到一個特定的ID」。當你做你正在嘗試的事情時會出現什麼問題?你做了什麼來試圖解決它? – Brandon

+0

我想創建一個評論系統,當用戶提交他/她的評論到一個特定的照片與一個唯一的ID(mongoDB默認創建)它應該插入到該特定的照片 –

+0

@Solomondavid我已經滿足您的要求在我的答案中添加對特定照片的評論。如果你仍然在尋找它,你可以參考它。 – mohamedrias

回答

2

按您的評論:

我試圖在用戶提交他/她的 評論與唯一ID的特定照片(其中MongoDB的 默認創建創建註釋系統)應該插入到特定的照片 -

  1. 我知道你有一個照片集,其中每張照片作爲一個獨特的我D.

  2. 當用戶提交評論到一個特定的照片是註釋必須在該照片

這是一個典型的更新操作,因爲你會被更新與評論的照片文件被插入插入陣列。

{ 
    _id : ObjectId("536f710fc55b2acc61000bc9"), 
    foo: "foo", 
    bar : "bar", 
    comments: [ 
    { 
     user : "userId", 
     comment: "The photo is nice" 
    } 
    ] 
} 

所以您的查詢將是:

db.photocollection.update(
    {_id: ObjectId("536f710fc55b2acc61000bc9")}, 
    {$push : { 
      comments : { 
       user: "userid", 
       comment: "photo is awesome" 
       } 
      } 
    } 
) 

所有的評論都插在同一張照片文件內。

注意:如果您覺得數字註釋會隨着時間的推移而增長很多,則 則更好地引用評論而不是嵌入。

希望它對你有用!

+0

我正在尋找這個答案 –

+0

,但我認爲這會更新現有的評論,我猜? –

+0

不會..這會在照片文章中添加新評論 – mohamedrias

4

所有你需要做的就是指定文檔中_id屬性您試圖插入:如the documentation提到

db.collection.insert({ "_id": "unique_id", "foo": "bar", ... }) 

,有幾個方面的考慮,你應該小心執行 - 即,您需要確保您指定的_id是唯一的。


從鏈接的文檔頁面摘自:

如果文件沒有指定_id字段,然後MongoDB的將增加 的_id場和前 插入指定的文檔的唯一的ObjectId。大多數驅動程序創建ObjectId並插入_id字段 ,但是如果驅動程序或應用程序沒有,則mongod將創建並填充_id。

如果文檔包含_id字段,則_id值在集合內必須是唯一的 以避免重複鍵錯誤。

+0

它顯示了錯誤報告中的重複ID可以ü發表我的評論系統的示例代碼 –

+0

嗯......正如我在回答中提到**兩次**,您必須確保您嘗試插入的_id是獨特。沒有示例代碼可以在這裏提供 - 就像它在我發佈的代碼和文檔中顯示的那樣。 – Lix

+0

現在感謝您的工作 –