如果我有一个mongo文档id作为字符串如何查询它作为_id?如果我有一个mongo文档id作为字符串如何查询它作为_id?
它会正常工作做.find({_id:'stringID'})
或我需要先将其转换为bson对象吗?
如果我有一个mongo文档id作为字符串如何查询它作为_id?如果我有一个mongo文档id作为字符串如何查询它作为_id?
它会正常工作做.find({_id:'stringID'})
或我需要先将其转换为bson对象吗?
你的意思是你有一个ObjectId的24位十六进制数字字符串?
假设这就是你的意思,大多数驱动程序有一个方法来获取一个字符串并将其转换为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值是字符串,您可以像查询其他字段一样查询它们。 (记住,如果你正在为_id设置自定义值,它们必须保持唯一,否则你将得到一个重复键错误。)
这里是蒙戈JS壳牌为例:
> db.test.insert({_id:"stringID1"})
> db.test.insert({_id:"stringID2"})
> db.test.insert({_id:"stringID3"})
> db.test.find({_id:"stringID1"})
{ "_id" : "stringID1" }
>
这是你在找什么?我希望我没有误解你的问题!
这实际上回答了**问**的问题,但显然不是她想要问的问题** ^^ – 2016-12-13 08:32:48
你'_id'可以**什么* *(数组除外)。所以是的,字符串_ids很好。 – 2012-04-20 22:12:12