我正在比较JSON和BSON序列化对象。 这些对象包含大量整数的几个数组。 在我的testing中,我正在序列化的对象总共包含大约12,000个整数。 我只对如何比较序列化结果的大小感兴趣。 我使用JSON.NET作为序列化的库。 我正在使用JSON,因为我也希望能够在Javascript中使用它。 JSONstring的大小约为43kb,BSON结果的大小为161kb。 所以差异因子约为4.这不是我所期望的,因为我看了BSON,因为我认为BSON在存储数据方面更加高效。 所以我的问题是为什么BSON效率不高,能否提高效率呢? 还是有另一种方式序列化数组包含大量的整数,这可以很容易地在Javascript中处理? 下面你可以findtestingJSON / BSON序列化的代码。 // Read file which contain json string string _jsonString = ReadFile(); object _object = Newtonsoft.Json.JsonConvert.DeserializeObject(_jsonString); FileStream _fs = File.OpenWrite("BsonFileName"); using (Newtonsoft.Json.Bson.BsonWriter _bsonWriter = new BsonWriter(_fs) { CloseOutput = false }) { Newtonsoft.Json.JsonSerializer _jsonSerializer = new JsonSerializer(); _jsonSerializer.Serialize(_bsonWriter, _object); _bsonWriter.Flush(); } 编辑: 以下是生成的文件https://skydrive.live.com/redir?resid=9A6F31F60861DD2C!362&authkey=!AKU-ZZp8C_0gcR0
我有从外部应用程序获取数据的Java应用程序。 传入的JSON在string中。 我想parsing这个string并创buildBSON对象。 不幸的是,在Java的BSON实现中我找不到API。 我有像GSON那样使用外部parsing器吗?
我刚刚开始与mongoDb和我已经注意到的一个事情是,它使用bson内部存储数据。但是文档不完全清楚什么BSON是什么,以及如何在mongoDb中使用它。有人可以解释它我好吗?
有没有人有关协议缓冲区与BSON(二进制JSON)或一般与JSON的性能特点的任何信息? 电线尺寸 序列化速度 反序列化速度 这些看起来像通过HTTP使用的好的二进制协议。 我只是想知道从长远来看哪个C#环境会更好。 以下是我在BSON和Protocol Buffers上阅读的一些信息。
我似乎甚至无法获得最基本的date查询在MongoDB中工作。 用一个看起来像这样的文档: { "_id" : "foobar/201310", "ap" : "foobar", "dt" : ISODate("2013-10-01T00:00:00.000Z"), "tl" : 375439 } 和一个看起来像这样的查询: { "dt" : { "$gte" : { "$date" : "2013-10-01T00:00:00.000Z" } } } 我从执行中得到0个结果 : db.mycollection.find({ "dt" : { "$gte" : { "$date" : "2013-10-01T00:00:00.000Z"}} }) 任何想法,为什么这是行不通的? 作为参考,这个查询是由Spring的MongoTemplate生成的,所以我没有直接控制最终发送到MongoDB的查询。 (PS) > db.version() 2.4.7 谢谢!
最近我发现了MessagePack ,它是Google 协议缓冲区和JSON的另一种二进制序列化格式。 还有MongoDB用来存储数据的BSON序列化格式。 有人能详细说明BSON与MessagePack的区别和优缺点吗? 只是为了完成性能二进制序列化格式的列表:还有Gobs 将成为谷歌的协议缓冲区的继任者 。 然而,与所有其他提及的格式相比,这些格式不是语言不可知的,依靠Go的内置reflection ,至less在Go语言之外还有Gobs库。
来自MongoDB权威指南: 大于4MB的文档(转换为BSON时)不能保存到数据库。 这是一个有些武断的限制(将来可能会提高)。 主要是防止糟糕的模式devise并确保性能一致。 我不明白这个限制,这是否意味着一个文档包含一个很多大于4MB的注释的博客post不能被存储为单个文档? 这也算嵌套的文件吗? 如果我想要一个文件来审核价值的变化呢? (它最终会增长,超过4MB的限制。) 希望有人解释正确。 我刚开始阅读关于MongoDB(我正在学习的第一个nosql数据库)。 谢谢。
使用嵌套对象表示法查询mongoDB时遇到问题: db.messages.find( { headers : { From: "reservations@marriott.com" } } ).count() 0 db.messages.find( { 'headers.From': "reservations@marriott.com" } ).count() 5 我看不出我做错了什么。 我期待嵌套的对象符号返回与点符号查询相同的结果。 我错在哪里?