入门教程
知识点
软件工具
相关文章
更多最近更新
更多MongoDB _id和ObjectId详解
2019-03-15 21:49|来源: 网路
在创建一个文档的时候,会生成一个_id,id的默认类型是ObjectId,如:
> db.blog.findOne()
{
"_id" : ObjectId("5755448bfceaa7879cd4d48f"),
"title" : "领悟书生",
"content" : "这是一个分享教程的网站",
"date" : ISODate("2016-06-06T09:38:08.995Z")
}
ObjectId的生成规则
4字节:UNIX时间戳
3字节:
这三个字节是所在主机的唯一标识符,一般是机器主机名的散列值,这样就确保了不同主机生成不同的机器hash值,确保在分布式中不造成冲突,这也就是在同一台机器生成的objectid中间的字符串都是一模一样的原因
2字节:表示生成此_id的进程,确保
同一台机器不同的mongodb进程产生了objectid不冲突
3字节:由一个随机数开始的计数器生成的值,确保在同一秒内产生的objectid也不会出现冲突
相关问答
更多-
这看起来不像一个MongoDB ObjectID - 一个ObjectID是12个字节的二进制数据,并且当呈现为十六进制字符串(在URL中使用它的常用方式)时,它的长度为24个字符。 我假设你使用官方的PHP Mongo Driver ,在这种情况下, MongoId类的构造函数会忽略无效值并为你生成一个新的。 无论如何,最好让驱动程序为你生成一个ObjectID / MongoId ,因为它可以避免冲突。 至于在你的网址中使用它的安全性,你应该没问题。 当然,您应该使用通常的关于实现代码的注意事项来确保当 ...
-
以下是将字符串转换为BSON ObjectID的正确语法: collection.find_one({:_id => BSON::ObjectId("4ec064e406a6f1205a000001")}) Here's the correct syntax for taking a string into a BSON ObjectID: collection.find_one({:_id => BSON::ObjectId("4ec064e406a6f1205a000001")})
-
准备好doc ..一个基本问题是mongo DB作为哈希表类型实现? MongoDB使用了BSON ,一种二进制形式的JSON。 JSON对象基本上只是一个“哈希表”或一组键/值对。 究竟是对象id的用途是什么? 这是一个随时间产生的大数字。 在MongoDB中,您存储的每个文档都必须具有_id 。 如果没有为_id设置值,那么MongoDB会自动为您生成一个值。 如果在插入对象时有唯一键,则可以使用该键。 有关ObjectId的详细信息,请参见此处 。 如果我看到任何nosql是键值,我用键查询值。 Mo ...
-
现在我不熟悉PHP,但你提出的架构设计很好。我在c#实现中使用了类似的结构。这里要清楚的是我的架构设计示例 Account Class public ObjectId Id{get;set;} public string Email {get;set} public string Password{get;set;} User Class public ObjectId Id{get;set;} public string AccountId {get;set}//refers ...
-
我知道了! 实际上,我可以通过这段代码来做到这一点: 而不仅仅是: user = db.users.findOne({userName:"And"}) 我做的只是: var user = db.users.findOne({userName:"And"}) 和 user._id 返回ObjectId(“someId”),如果我想将它保存在我做的某个变量中: var Id = user._id. 关于第二个问题,我不知道。 I got it! Actually , I could do i ...
-
通过_id的MongoDB Node.js deleteOne不能在ObjectId上运行(MongoDB Node.js deleteOne via _id doesn't work on ObjectId)[2022-01-01]
你确定你的灯具在不同的测试之间没有损坏吗? 顺便说一句不应该 return MongoDb.ObjectId(id); 是 return new MongoDb.ObjectId(id); ? Are you sure your fixtures aren't mangled between different tests? And by the way shouldn't return MongoDb.ObjectId(id); be return new MongoDb.ObjectId(id); ... -
如何使用autoGenearte _id代替mongoDB ObjectId()(how to autoGenearte _id instead of mongoDB ObjectId())[2023-01-26]
将现有的NO-arg构造函数替换为Student.class中的后续构造函数 public Student(){ super(); id = UUID.randomUUID().toString(); } 这将生成随机ID而不是MongoDB ObjectId Replace the existing NO-arg Constructor with following one in Student.class public Student(){ super(); id = UUID.r ... -
对于你的第一个问题,mongodb 有这样的问题 db.collection.update({query for id},{document},{upsert:true}) 或者在java驱动程序中 yourCollection.update(searchObject,modifiedObject,true,false); 如果要设置自定义ID,只需手动设置_id键即可 yourBasicDBObject.put( “_ ID”,yourCustomId) 您只需确保它对每个文档都是唯一的。 您还需要在mo ...
-
请查看https://code.google.com/p/morphia/source/browse/trunk/morphia/src/main/java/com/google/code/morphia/utils/LongIdEntity.java https:// github .com / mongodb / morphia / blob / master / morphia / src / test / java / org / mongodb / morphia / utils / LongId ...
-
MongoDB返回一个BSON (不是JSON )文档,所以实际上你想要将BSON文档转换为JSON文档。 试着看看这个artickle: https ://technobeans.com/2012/09/10/mongodb-convert-bson-to-json/ MongoDB returns a BSON (not a JSON) document, so actually you want to convert a BSON document into JSON document. Try to ...