Although what you see seems to be a string, the _id of document is actually an ObjectId object, so you must use the ObjectId() method to convert the string into an object before it can be used
Add some basic knowledge. mongo shell is built on JavaScript的基础上的,不管是V8还是SpiderMonkey(两者都曾经作为mongo shell的引擎被使用过),都遵循EMCAScript并实现了它的一个子集。这就意味着shell里面的一切数据类型必须是ECMA标准中规定的数据类型。如果去查标准的话,JS的数据类型是非常有限的,基本上满足不了一个数据库的需要。所以有了BSON,支持那些JSON规范里没有的数据类型。ObjectID就是其中之一。所以剩下的问题就是如何在JS的语法下表达一个它没有的数据类型,结果就是你看到的ObjectID("...").
Although what you see seems to be a string, the _id of document is actually an ObjectId object, so you must use the
ObjectId()
method to convert the string into an object before it can be usedAdd some basic knowledge.
mongo shell is built on
JavaScript
的基础上的,不管是V8
还是SpiderMonkey
(两者都曾经作为mongo shell的引擎被使用过),都遵循EMCAScript并实现了它的一个子集。这就意味着shell里面的一切数据类型必须是ECMA标准中规定的数据类型。如果去查标准的话,JS的数据类型是非常有限的,基本上满足不了一个数据库的需要。所以有了BSON
,支持那些JSON
规范里没有的数据类型。ObjectID
就是其中之一。所以剩下的问题就是如何在JS的语法下表达一个它没有的数据类型,结果就是你看到的ObjectID("...")
.Because _id is globally unique.