标签: objectid

Mongo =获取单个文档的大小

我遇到了一个奇怪的mongo行为,我想稍微澄清一下......
我的请求很简单:我想在集合中获得单个文档的大小.我发现了两种可能的解决方

  • Object.bsonsize - 一些应该以字节为单位返回大小的javascript方法
  • db.collection.stats() - 其中有一行'avgObjSize',它在数据上产生一些"聚合"(平均)大小视图.它只代表单个文档的平均大小.

  • 当我使用一个文档创建测试集合时,两个函数都返回不同的值.这怎么可能?
    是否存在其他方法来获取mongo文档的大小?

在这里,我提供了一些我执行测试的代码:

  1. 我创建了新的数据库'test'并输入只有一个属性的简单文档:type:"auto"

    db.test.insert({type:"auto"})
    
    Run Code Online (Sandbox Code Playgroud)
  2. stats()函数调用的输出:db.test.stats():

    { 
      "ns" : "test.test",
      "count" : 1,
      "size" : 40,
      "avgObjSize" : 40,
      "storageSize" : 4096,
      "numExtents" : 1,
      "nindexes" : 1,
      "lastExtentSize" : 4096,
      "paddingFactor" : 1,
      "systemFlags" : 1,
      "userFlags" : 0,
      "totalIndexSize" : 8176,
      "indexSizes" : {
            "_id_" : 8176
    },
    "ok" : 1
    
    Run Code Online (Sandbox Code Playgroud)

    }

  3. bsonsize函数调用的输出:Object.bsonsize(db.test.find({test:"auto"}))

    481
    
    Run Code Online (Sandbox Code Playgroud)

javascript document objectsize mongodb objectid

68
推荐指数
4
解决办法
6万
查看次数

如何将objectid转换为字符串

我想从ObjectId对象中获取字符串字符.我用pymongo.例如:ObjectId("543b591d91b9e510a06a42e2")我想得到"543b591d91b9e510a06a42e2".

它说ObjectId.toString(),我看到了医生ObjectId.valueOf().

所以我做了这段代码:from bson.objectid import ObjectId.

但是当我使用时ObjectId.valueOf(),它显示:

'ObjectId'对象没有属性'valueOf'.

我怎么才能得到它?谢谢.

pymongo objectid

49
推荐指数
2
解决办法
4万
查看次数

在MongoDB中存储ObjectId及其字符串形式之间的区别

我对Mongo DB使用ObjectIds感到有些困惑.当然,它们非常适合创建ID客户端,几乎肯定不会与其他客户端创建的ID冲突.但是mongo似乎以某种特殊的方式存储它们.存储id的字符串表示与将对象id存储为对象不同.为什么是这样?

字符串表单是否具有对象表单具有的所有相同信息?mongo为什么要这么长时间来区分这两种形式呢?当我尝试比较从前端发送的_ids时,它会搞砸我.我的数据库与它是否存储字符串形式的id或对象形式id无关,而且我的代码肯定是部分责备,我主要责怪mongo让它变得如此奇怪.

我错了,这很奇怪吗?为什么mongo这样做?

mongodb objectid

35
推荐指数
2
解决办法
1万
查看次数

Mongoose中的Model.findOne()和Model.findById()有什么区别?

考虑我们正在根据_id值从MongoDB中搜索文档.以下哪个代码有效?

  1. ModelObj.findById(IdValue).exec(callback);

  2. ModelObj.findOne({ '_id': IdValue}).exec(callback);

我觉得ModelObj.findById()是有效的,但有什么支持的原因或它是如何有效的?

mongoose mongodb node.js objectid

23
推荐指数
2
解决办法
2万
查看次数

MongoDB存储ObjectId的数组

在我的数据库中,我必须存储一个对象id数组.我该怎么用?像这样的东西:

[ObjectId("50350e12a36feb1be6000364"), ObjectId("57350e12a37fef1be6000922"), ObjectId("10350e17d34ffb1be6200925")]
Run Code Online (Sandbox Code Playgroud)

或类似的东西:

["50350e12a36feb1be6000364", "57350e12a37fef1be6000922", "10350e17d34ffb1be6200925"]
Run Code Online (Sandbox Code Playgroud)

我可以用第二个节省空间,然后投射到ObjectId,但是我是否通过这种方法失去了任何东西?不要ObjectId小号表现得像在关系数据库中的外键?

foreign-keys mongodb objectid

18
推荐指数
2
解决办法
3094
查看次数

Mongodb从String到ObjectId加入_id字段

我有两个系列

  1. 用户

             {
                 "_id" : ObjectId("584aac38686860d502929b8b"),
                 "name" : "John"
             }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 角色

     {
         "_id" : ObjectId("584aaca6686860d502929b8d"),
         "role" : "Admin",
         "userId" : "584aac38686860d502929b8b"  
     }
    
    Run Code Online (Sandbox Code Playgroud)

我想基于userId(在角色集合中) - _id(在用户集合中)加入这些集合.

我尝试了以下查询:

db.role.aggregate(
{
   $lookup:
   {
       from: 'user',
       localField: 'userId',
       foreignField: '_id',
       as: 'output'
   }
}
);
Run Code Online (Sandbox Code Playgroud)

只要我将userId存储为ObjectId,这就给了我预期的结果.当我的userId是一个字符串时,没有结果.Ps:我试过了

foreignField:'_ id'.valueOf()

foreignField:'_ id'.toString()

.但是基于ObjectId-string字段匹配/加入没有运气.

任何帮助将不胜感激.

lookup join mongodb aggregation-framework objectid

17
推荐指数
3
解决办法
2万
查看次数

为什么在ruby2.0中object_id为true和nil?

我在某个时候遇到过这个 ruby object_id分配问题,然后阅读了这篇讨论VALUE的精彩文章,并解释了为什么object_id为true,nil和false的方式.当我发现有关object_id为true和nil的明显变化时,我一直在使用ruby2.0 object_id.

forbidden:~$ ruby -v
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]
forbidden:~$
forbidden:~$ irb
irb(main):001:0> true.object_id
=> 20
irb(main):002:0> false.object_id
=> 0
irb(main):003:0> nil.object_id
=> 8
irb(main):004:0> exit
forbidden:~$
forbidden:~$ rvm use 1.9.3
Using /home/forbidden/.rvm/gems/ruby-1.9.3-p392
forbidden:~$ ruby -v
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-linux]
forbidden:~$
forbidden:~$ irb
irb(main):001:0> true.object_id
=> 2
irb(main):002:0> false.object_id
=> 0
irb(main):003:0> nil.object_id
=> 4
Run Code Online (Sandbox Code Playgroud)

tl; dr: true和nil的值在1.9.3和1.8.7中分别为2,4,但在ruby2.0.0中已经更改为20,8,即使id为false仍然相同,即0和Fixnum的ID保持相同的旧2n + 1模式.

此外,Fixnum和Bignum的实现方式在2.0.0中仍然相同,因为上面提到的文章中给出的示例运行方式与以前相同:

irb(main):001:0> 
irb(main):002:0* ((2**62)).class
=> Bignum
irb(main):003:0> ((2**62)-1).class
=> …
Run Code Online (Sandbox Code Playgroud)

ruby internals objectid ruby-2.0

15
推荐指数
1
解决办法
1348
查看次数

这两个Ruby符号有什么区别?

在玩了对象id之后我发现了这个.

ObjectSpace._id2ref(2648)
=> :**
ObjectSpace._id2ref(6688)
=> :**
ObjectSpace._id2ref(2648) == ObjectSpace._id2ref(6688)
=> false
Run Code Online (Sandbox Code Playgroud)

第一个是求幂运算符的符号;

2.send(ObjectSpace._id2ref(2648), 3)
=> 8
2.send(ObjectSpace._id2ref(6688), 3)
NoMethodError: undefined method `**' for 2:Fixnum
Run Code Online (Sandbox Code Playgroud)

但第二个不知何故不是?我认为它们在传递给#print之后看起来一样.但是,什么区别?其中一个是某种形式的unicode符号吗?

更新:第二个可能是关键字参数的新双splat,但我似乎无法验证这一点.

ruby symbols splat objectid

13
推荐指数
1
解决办法
264
查看次数

MongoDB _id(ObjectId)是按升序生成的吗?

我知道当文档插入集合时,_id列如何包含时间戳的表示.这是一个将其转换为时间戳的在线实用程序:http://steveridout.github.io/mongo-object-time/

我想知道的是,对象id字符串本身是否保证维持升序?即这种比较总是返回真实吗?

"newest object id" > "second newest object id"

mongodb objectid

13
推荐指数
3
解决办法
5958
查看次数

Primitive.ObjectID 到 Golang 中的字符串

我正在尝试将类型转换primitive.ObjectIDstringGo 中的类型。我正在使用mongo-driverfrom go.mongodb.org/mongo-driver.

我尝试使用类型断言

mongoId := mongoDoc["_id"];
stringObjectID := mongoId.(string)
Run Code Online (Sandbox Code Playgroud)

哪个 VSCode 接受。代码被编译,当它到达这个特定的代码行时,它会抛出这个错误

panic: interface conversion: interface {} is primitive.ObjectID, not string
Run Code Online (Sandbox Code Playgroud)

string go mongodb objectid mongo-go

12
推荐指数
2
解决办法
1万
查看次数