如果我有一个mongo文件id作为string如何查询它作为_id?

如果我有一个mongo文件id作为string如何查询它作为_id?

它会工作正确的.find({_id:'stringID'})或者我需要先将其转换为一个BBS对象?

你的意思是你有一个ObjectId的24位hex数字string?

假设这是你的意思,大多数驱动程序有一个方法来获取一个string,并将其转换为ObjectId。 在JavaScript中:

 .find({_id:new ObjectId("4f91bfcfaa7c5687a0c686d4")}) 

更新后对节点本地驱动程序更有用(从https://github.com/christkv/node-mongodb-native上的文档):

 // Get the objectID type var ObjectID = require('mongodb').ObjectID; var idString = '4e4e1638c85e808431000003'; collection.findOne({_id: new ObjectID(idString)}, console.log) // ok collection.findOne({_id: idString}, console.log) // wrong! callback gets undefined 

如果您的_id值是string,则可以像查询其他字段一样查询它们。 (请记住,如果您正在为_id设置自定义值,则必须保持其唯一性,否则将会出现重复的键错误。)

下面是Mongo JS Shell中的一个例子:

 > db.test.insert({_id:"stringID1"}) > db.test.insert({_id:"stringID2"}) > db.test.insert({_id:"stringID3"}) > db.test.find({_id:"stringID1"}) { "_id" : "stringID1" } > 

这是你在找什么? 我希望我没有误解你的问题!