我在nodejs
環境中使用mongodb native driver,我需要將id
字符串轉換爲ObjectId才能在我的更新查詢中使用它,我該怎麼做?如何將字符串轉換爲nodejs mongodb本機驅動程序中的ObjectId?
33
A
回答
46
當你有一個表示BSON的ObjectId(例如來自Web請求接收)的字符串,那麼你需要將其轉換爲一個的ObjectId實例:
const {ObjectId} = require('mongodb'); // or ObjectID
// or var ObjectId = require('mongodb').ObjectId if node version < 6
const updateStuff = (id, doc) => {
// `ObjectId` can throw https://github.com/mongodb/js-bson/blob/0.5/lib/bson/objectid.js#L22-L51, it's better anyway to sanitize the string first
if (!ObjectId.isValid(s)) {
return Promise.reject(new TypeError(`Invalid id: ${id}`));
}
return collection.findOneAndUpdate(
{_id: ObjectId(id)},
{$set: doc},
{returnOriginal: false}
);
};
3
var {ObjectId} = require('mongodb'); // or ObjectID Not Working
正如@caubub提到的那樣對我不起作用。
但是當我在MongoDB中使用var ObjectID = require('mongodb').ObjectID; // convert string to ObjectID
時,我能夠將字符串轉換爲nodejs中的ObjectId mongodb本地驅動器。
僅供參考訪問http://mongodb.github.io/node-mongodb-native/2.2/api/ObjectID.html
相關問題
- 1. NodeJS,使用MongoDB本地驅動程序,如何將ObjectID轉換爲字符串
- 2. 如何刪除需要將_id(作爲字符串)轉換爲nodejs/mongodb本機庫中的新ObjectID(字符串)?
- 3. 如何將字符串轉換爲ObjectId
- 4. 如何使用MongoDB C++驅動程序將字符串轉換爲BSON?
- 5. MongoDB將ObjectId轉換爲結果中的字符串
- 6. 將ObjectID(Mongodb)轉換爲JavaScript中的字符串
- 7. 將MongoDB ObjectId序列化爲字符串
- 8. 春數據MongoDB的查詢字符串轉換爲自動OBJECTID
- 9. 如何將字符串轉換爲LocalField中的objectId以進行$ lookup Mongodb
- 10. 如何將ObjectId轉換爲Python中的字符串?
- 11. _id從ObjectId轉換爲MEAN應用程序中的字符串
- 12. 使用Mongoose將字符串字段轉換爲MongoDB中的ObjectID字段
- 13. 如何將mongodb ISODate轉換爲mongoDB中的字符串?
- 14. findOne NodeJS MongoDB驅動程序
- 15. 如何將Mongodb Nodejs驅動程序更新到最新版本?
- 16. pdo_sqlsrv驅動程序如何將float類型轉換爲字符串?
- 17. NodeJS將字符串轉換爲變量
- 18. 將MongoDB BsonDocument轉換爲字符串
- 19. 如何通過NodeJS的MongoDB本地驅動程序執行db.copyDatabase?
- 20. MongoDB將字符串轉換爲數組
- 21. 將Bson轉換爲字符串 - MongoDB/Javascript
- 22. 將字符串轉換爲MongoDB BsonObjectId
- 23. mongodb如何將_id轉換爲JAVA中的字符串
- 24. 如何將字符串轉換爲MongoDB中的數組?
- 25. MongoDB(C#驅動程序)問題反序列化ObjectID字段
- 26. 將字符串轉換爲程序
- 27. 將.NET Guid轉換爲MongoDB ObjectID
- 28. Java。如何將隨機的字符行轉換爲字符串?
- 29. 如何將字符串轉換爲clob?
- 30. 使用MongoDB Java驅動程序將DBObject轉換爲POJO
謝謝,你說得對我的使用情況。但如果我在客戶端生成'_id',是不是需要檢查其集合中的唯一性?我認爲檢查比在服務器端進行類型轉換更昂貴,你認爲如何? –
「如果值不是唯一的,insert會失敗」,來自docs.mongodb.org/manual/reference/method/db.collection.insert,我不知道每種方法的性能,但ObjectIds只有24字節哈希,它取決於你的實現 – caub
你好,@caub感謝您的寶貴答案。我在Angular 2/4和MongoDb中有點新手。在我的應用程序中,我使用Angular 2,LoopBack和MongoDb。我不知道這塊代碼應該添加在哪裏!它應該添加到Angular typescript文件還是在LoopBack服務器文件中?你能指導我嗎?我完全被困在這個時間點。如果我在打字稿文件中添加此代碼,那麼我會收到以下錯誤: 模塊未找到:錯誤:無法解析'mongodb' –