2016-01-20 94 views
0

我正在使用MongoDB(目前使用Mongojs)開發NodeJS快速應用程序,但無法弄清楚如何使用它執行某些操作。如何在插入時獲取MongoDB對象的唯一標識

我需要將一個對象插入到一個集合中,並立即獲取這個新插入的唯一標識符作爲變量存儲,以便稍後在應用程序中使用。我對使用Mongo非常陌生,但據我所知,有一個'_id'字段會自動生成爲任何集合的主鍵。這看起來像我需要的,糾正我,如果我錯了。

任何援助將不勝感激。 再次感謝。

回答

1

隨着MongoJS,您可以collection.save()collection.insert()使用回調,例如:

db.myCollection.save({ 
    foo: 'foo', 
    bar: 'bar' 
}, function (err, doc) { 
    // here, the doc will have the generated _id 
    console.log(doc); 
    /* output: 
    { 
     "foo": "foo", 
     "bar": "bar", 
     "_id": "569f1730fde60ac030bc223c" 
    } 
    */ 
}); 
+0

這是令人難以置信的冷靜。有沒有辦法從回調函數中獲取該值? – Nodal

+1

@Nodal這有點棘手,你有一些答案在這裏:http://stackoverflow.com/questions/6847697/how-to-return-value-from-an-asynchronous-callback-function?lq=1(檢查鏈接的「重複」),基本上,你不能,你必須使用它。提議的解決方案之一是使用Promises,MongoJS不支持它們,但官方的[mongodb](https://www.npmjs.com/package/mongodb)驅動程序或[mongoose](https://www.npmjs。 com/package/mongoose)(如果你需要像ODM/ORM這樣的高級功能)。 – Shanoor

+0

再次感謝。我有點預測到了答案。仍然試圖讓我的頭承諾承諾 - 我理解的概念,但與所有事情一樣,與實現和語法的鬥爭。我認爲這可能值得放棄MongoJS嗎? – Nodal