标签: bson

如何查询嵌套对象?

使用嵌套对象表示法查询mongoDB时遇到问题:

db.messages.find( { headers : { From: "reservations@marriott.com" } } ).count()
0
db.messages.find( { 'headers.From': "reservations@marriott.com" }  ).count()
5
Run Code Online (Sandbox Code Playgroud)

我看不出我做错了什么.我期望嵌套对象表示法返回与点表示法查询相同的结果.我哪里错了?

syntax nested mongodb bson mongodb-query

191
推荐指数
3
解决办法
15万
查看次数

在mongodb中使用ISODate进行日期查询似乎不起作用

我似乎无法在MongoDB中使用最基本的日期查询.使用看起来像这样的文档:

{
    "_id" : "foobar/201310",
    "ap" : "foobar",
    "dt" : ISODate("2013-10-01T00:00:00.000Z"),
    "tl" : 375439
}
Run Code Online (Sandbox Code Playgroud)

一个看起来像这样的查询:

{ 
    "dt" : { 
        "$gte" : { 
            "$date" : "2013-10-01T00:00:00.000Z"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我从执行中得到0结果:

db.mycollection.find({
  "dt" : { "$gte" : { "$date" : "2013-10-01T00:00:00.000Z"}}
})
Run Code Online (Sandbox Code Playgroud)

知道为什么这不起作用吗?

作为参考,此查询由Spring的MongoTemplate生成,因此我无法直接控制最终发送到MongoDB的查询.

(PS)

> db.version()
2.4.7
Run Code Online (Sandbox Code Playgroud)

谢谢!

json mongodb bson isodate

170
推荐指数
5
解决办法
33万
查看次数

了解MongoDB BSON文档大小限制

来自MongoDB的权威指南:

大于4MB的文档(转换为BSON时)无法保存到数据库中.这是一个有点武断的限制(将来可能会提出); 它主要是为了防止错误的架构设计并确保一致的性能.

我不明白这个限制,这是否意味着包含博客帖子的文档大量超过4MB并不能存储为单个文档?

这也计算嵌套文档吗?

如果我想要一个审核值变化的文档怎么办?(最终可能会增长,超过4MB限制.)

希望有人正确解释.

我刚刚开始阅读MongoDB(我正在学习的第一个nosql数据库).

谢谢.

mongodb bson

143
推荐指数
5
解决办法
9万
查看次数

性能实体序列化:BSON与MessagePack(vs JSON)

最近我发现了MessagePack,这是Google的Protocol BuffersJSON的替代二进制序列化格式,它也优于两者.

还有MongoDB用于存储数据的BSON序列化格式.

有人可以详细说明BSON与MessagePack差异和优势吗?


只是为了完成高效的 二进制序列化格式列表:还有Gobs将成为Google协议缓冲区的继承者.然而,与所有其他提到的格式相比,这些格式不是语言无关的,并且依赖于Go的内置反射,至少还有除Go之外的其他语言的Gobs库.

serialization bson deserialization messagepack msgpack

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

什么是BSON,它与JSON有何不同?

我刚刚开始使用MongoDB,我注意到的一件事是它使用BSON在内部存储数据.但是,关于BSON是什么以及如何在MongoDB中使用它的文档并不完全清楚.有人可以向我解释一下吗?

json mongodb nosql bson

123
推荐指数
7
解决办法
6万
查看次数

协议缓冲区与JSON或BSON

有没有人有关于协议缓冲区与BSON(二进制JSON)或一般JSON的性能特征的任何信息?

  • 电线尺寸
  • 序列化速度
  • 反序列化速度

这些似乎是用于HTTP的良好二进制协议.我只是想知道从长远来看哪个C#环境会更好.

这是我在BSONProtocol Buffers上阅读的一些信息.

c# comparison json protocol-buffers bson

90
推荐指数
4
解决办法
5万
查看次数

从JSON字符串创建BSON对象

我有Java应用程序从外部应用程序获取数据.传入的JSON位于字符串中.我想解析字符串并创建BSON对象.

不幸的是,我无法在Java的BSON实现中找到API.

我是否像GSON一样使用外部解析器?

java json mongodb bson

44
推荐指数
5
解决办法
8万
查看次数

比较JSON和BSON

我正在比较JSON和BSON以序列化对象.这些对象包含多个具有大量整数的数组.在我的测试中,我序列化的对象包含大约12,000个整数的总数.我只对序列化结果的大小比较感兴趣.我使用JSON.NET作为执行序列化的库.我正在使用JSON,因为我也希望能够在Javascript中使用它.

JSON字符串的大小约为43kb,BSON结果的大小为161kb.因此差异系数约为4.这不是我的预期,因为我看了BSON,因为我认为BSON在存储数据方面更有效率.

所以我的问题是为什么BSON效率不高,能否提高效率?或者是否有另一种使用包含大量整数的数组序列化数据的方法,可以在Javascript中轻松处理?

您可以在下面找到测试JSON/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();
        }
Run Code Online (Sandbox Code Playgroud)

编辑:

以下是生成的文件 https://skydrive.live.com/redir?resid=9A6F31F60861DD2C!362&authkey=!AKU-ZZp8C_0gcR0

.net javascript json json.net bson

39
推荐指数
1
解决办法
3万
查看次数

MongoDB - 十进制类型的值怎么样?

我目前正在学习并将MongoDB应用于一个小型金融相关项目.


当我阅读MongoDB in Action时,它说:

BSON数字类型通常出现的唯一其他问题是缺少小数支持.这意味着如果您计划在MongoDB中存储货币值,则需要使用整数类型并将值保持为美分.


我的财务相关产品将涉及一些货币价值,但我有点困惑或担心上述声明.这是我的问题:

  1. 我可以double用于currency values我项目中的那些人吗?
  2. 如果我直接使用double它们会发生什么或后果?
  3. 如果十进制类型是金融产品必备的东西,那么使用MongoDB是个坏主意吗?
  4. 这是什么意思you need to use an integer type and keep the values in cents?这是否意味着如果我要去商店1.34 dollars,那么我应该存储134 cents

谢谢

decimal bigdecimal mongodb bson

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

哪一个更轻,JSON还是BSON?

我编写了将对象序列化为JSON和BSON的代码.根据我的输出,生成的BSON的大小比JSON大.这是预期的吗?

从我的代码Bson.class(使用杰克逊和bson4jackson)

private ByteArrayOutputStream baos = new ByteArrayOutputStream();
private BsonFactory fac = new BsonFactory();

private ObjectMapper mapper = new ObjectMapper(fac);

public Bson(Object obj) throws JsonGenerationException,
        JsonMappingException, IOException {
    mapper.writeValue(baos, obj);
}

public int size() {
    return baos.size();
}

public String toString() {
    byte[] bytes = baos.toByteArray();
    return new String(bytes);
}
Run Code Online (Sandbox Code Playgroud)

从我的 Json.class

private ByteArrayOutputStream baos = new ByteArrayOutputStream();
private ObjectMapper mapper = new ObjectMapper();

public Json(Object obj) throws JsonGenerationException,
        JsonMappingException, IOException {
    mapper.writeValue(baos, obj);
}
Run Code Online (Sandbox Code Playgroud)

(size()和 …

java json jackson bson

30
推荐指数
2
解决办法
6656
查看次数