标签: bson

哪一个更轻,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
查看次数

消息应用程序的MongoDB结构

我正在考虑一个处理消息应用程序的良好文档结构.

我基本上需要三种(或四种)对象:

  1. 用户(用户名,电子邮件,密码等)
  2. 联系人列表(包含不同的联系人或联系人组)
  3. 对话(对话是一些人之间的消息集合)
  4. 消息(包含消息正文,一些时间戳和创建者.)

我的想法是将联系人嵌入到用户文档中并将消息嵌入到对话文档中:

1.用户

{
    username: 'dev.puS',
    usernameCanonical: 'dev.pus', // used for unique constraints
    email: 'developement.pus@gmail.com,
    emailCanonical: 'developement.pus@gmail.com,
    salt: 'some hash',
    password: 'hash with salt',
    logs: { last_login: 12.06.2008, last_password_reset: 04.03.2007 },
    state: { online: true, available: false },
    contacts: [ user_id1, user_id2, user_id3 ]
}
Run Code Online (Sandbox Code Playgroud)

2.会话

{
    members: [ user_id1, user_id2 ],
    messages: [
        { author: user_2, body: 'Hi what's up' },
        { author: user_1, body: 'Nothing out here :(' },
        { author: user_2, body: …
Run Code Online (Sandbox Code Playgroud)

mongodb database-schema bson

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

如何使用人类可读的日期格式将BSON转换为JSON

我想将MongoDB的BSON转储转换为JSON.

要做到这一点,我正在使用Mongo提供的bsondump工具,但我得到的输出如下:

{ "_id" : ObjectId( "5316d194b34f6a0c8776e187" ), "begin_date" : Date( 1394004372038 ), "foo" : "bar" }
{ "_id" : ObjectId( "5316d198b34f6a0c8776e188" ), "begin_date" : Date( 1394004407696 ), "foo" : "bar" }
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何以人类可读的格式显示日期(例如hh:mm:ss dd/mm/yyyy)?

编辑

看起来更新版的mongodump输出日期为:

{ "_id" : ObjectId( "5316d194b34f6a0c8776e187" ), "begin_date" : {"$date":"2015-11-11T08:45:03.974Z"}}, "foo" : "bar" }
Run Code Online (Sandbox Code Playgroud)

所以这个问题不再适用了.感谢大家的帮助.

json date mongodb bson

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

编码对象时未使用MongoDB BSON编解码器

我正在尝试将对象存储在MongoDB数据库中(使用MongoDB 3.0.2)并CodecConfigurationException在尝试使用错误消息对对象进行编码时获取

Can't find a codec for class java.time.LocalDate. 
Run Code Online (Sandbox Code Playgroud)

我已经编写并包含了LocalDate对象的编解码器.细节如下.

DutyBlock我试图存储的对象具有以下成员变量:

public class DutyBlock {
    private LocalDate startDate;
    private LocalDate endDate; //Inclusive
    private int blockLength;
    private double pointValue;
    private ArrayList<Ra> assigned;
}
Run Code Online (Sandbox Code Playgroud)

我编写了以下编解码器来编码DutyBlock数据库中的对象:

public class DutyBlockCodec implements Codec<DutyBlock> {

    @Override
    public void encode(BsonWriter writer, DutyBlock t, EncoderContext ec) {
        Document document = new Document();
        document.append("startDate", t.getStartDate());
        document.append("endDate", t.getEndDate());
        document.append("blockLength", t.getBlockLength());
        document.append("pointValue", t.getPointValue());
        document.append("assigned", t.getRasOnDuty());

        writer.writeString(document.toJson());  //Line 27 in the error message.
    }

    @Override …
Run Code Online (Sandbox Code Playgroud)

java encoding mongodb bson

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

npm install mongoose失败(kerberos和bson错误)

所以我试图启动我的节点应用程序,但我的MongoDB安装有一些错误.

以下是我的开发环境的规范:

node => 0.10.33(从nodejs.org安装)

npm => 1.4.28(从nodejs.org安装)

git => 2.1.3(自制)

mongodb => 2.6.5(自制)

如果它有所作为,我也使用Mean Stack Skeleton作为教程的一部分.

简而言之,当我尝试使用我的节点应用程序时$ node app.js,我得到以下反馈:

USER$ npm install mongoose

> kerberos@0.0.4 install /Users/USER/APP/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/kerberos/lib/kerberos.o
  CXX(target) Release/obj.target/kerberos/lib/worker.o
  CC(target) Release/obj.target/kerberos/lib/kerberosgss.o
  CC(target) Release/obj.target/kerberos/lib/base64.o
  CXX(target) Release/obj.target/kerberos/lib/kerberos_context.o
  SOLINK_MODULE(target) Release/kerberos.node
  SOLINK_MODULE(target) Release/kerberos.node: Finished

> bson@0.2.15 install /Users/USER/APP/node_modules/mongoose/node_modules/mongodb/node_modules/bson
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/bson/ext/bson.o
  SOLINK_MODULE(target) Release/bson.node
  SOLINK_MODULE(target) Release/bson.node: Finished
mongoose@3.8.18 node_modules/mongoose …
Run Code Online (Sandbox Code Playgroud)

kerberos mongoose bson npm node-gyp

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

如何使用Python将MongoDB的bsondump转换为JSON?

所以我从MongoDB转储中获得了大量的.bson.我在命令行上使用bsondump,将输出作为stdin传递给python.这成功地从BSON转换为'JSON',但它实际上是一个字符串,看似不合法的JSON.

例如,传入的行看起来像这样:

{ "_id" : ObjectId( "4d9b642b832a4c4fb2000000" ),
  "acted_at" : Date( 1302014955933 ),
  "created_at" : Date( 1302014955933 ),
  "updated_at" : Date( 1302014955933 ),
  "_platform_id" : 3,
  "guid" : 72106535190265857 }
Run Code Online (Sandbox Code Playgroud)

我相信的是Mongo Extended JSON.

当我读到这样一行并做:

json_line = json.dumps(line)
Run Code Online (Sandbox Code Playgroud)

我明白了:

"{ \"_id\" : ObjectId( \"4d9b642b832a4c4fb2000000\" ),
\"acted_at\" : Date( 1302014955933 ),
\"created_at\" : Date( 1302014955933 ),
\"updated_at\" : Date( 1302014955933 ),
\"_platform_id\" : 3,
\"guid\" : 72106535190265857 }\n"
Run Code Online (Sandbox Code Playgroud)

哪个还是<type 'str'>.

我也试过了

json_line = json.dumps(line, default=json_util.default)
Run Code Online (Sandbox Code Playgroud)

(请参阅pymongo …

python json mongodb bson

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

MongoDB单文档大小限制为16MB

已知信息:已知 MongoDB存储在BSON(二进制JSON)中,最大BSON文档大小为16MB.

问题:为什么16MB本身为什么不是32MB或64MB或者更多,并且确切地限制了16MB以及依赖于16MB的原因是什么?

提到在传输过程中,不会消耗过多的带宽,并且不需要服务器上过多的RAM.但是,如果我们能够承受网络带宽和RAM内存消耗,该怎么办?那么,除了GridFS之外,我们没有任何选择.为什么?

这可能听起来很愚蠢.但请有人能对此有所启发吗?


更新:它是4MB,现在是16MB.

mongodb BSON大小

我们可以通过发出以下命令在Mongo Shell上查看它

db.isMaster().maxBsonObjectSize/(1024*1024)
Run Code Online (Sandbox Code Playgroud)

为什么DBA不允许这样做?

database database-administration limit mongodb bson

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

如何使用mgo从golang中的mongodb集合中选择所有记录

在MongoDB中执行类似db.mycollection.find()返回集合中所有文档的操作.

使用包labix.org/v2/mgo在GoLang工作时我做了例如:

query := db.C("client").Find();
Run Code Online (Sandbox Code Playgroud)

它抱怨它需要以界面的形式输入.我需要做的就是检索所有文档并迭代它们并显示每个文档.我该如何达到这个效果?我见过的所有例子似乎都有过滤器.

go mongodb bson mgo

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

在OS X上使用bson进行Flask ImportError

我无法使用Flask,MongoDB和Python来使用简单的Hello World应用程序.尝试从bson模块导入时,该应用程序正在轰炸.所有模块都已成功安装pip,我正在运行virtualenv,所以我不知道为什么我收到错误:ImportError: cannot import name BSON

这是我的示例应用代码:

import os
from flask import Flask
from flask import g
from flask import jsonify
from flask import json
from flask import request
from flask import url_for
from flask import redirect
from flask import render_template
from flask import make_response
import pymongo
from pymongo import Connection
from bson import BSON
from bson import json_util

app = Flask(__name__)

@app.route('/')
def hello():

    connection = Connection()
    # Get your DB
    db …
Run Code Online (Sandbox Code Playgroud)

python mongodb bson pymongo

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

mongodb c#如何使用BSON文档

我花了很多时间寻找答案......这在PHP中很容易,但我不能把它放在C#中(我是C#和mongo的新手......)我正在尝试迭代存储文档的所有级别.该文件如下:

{
    "_id": ObjectId("51f90101853bd88971ecdf27"),
    "fields": [
        {
            "ID": ObjectId("51fd09498b080ee40c00514e"),
            "NAME": "ID",
            "TYPE": "Text"
        },
        {
            "ID": ObjectId("51fd09a68b080ee40c0064db"),
            "NAME": "Title",
            "TYPE": "Text"
        },
        {
            "ID": ObjectId("51fd09b28b080ee40c004d31"),
            "NAME": "Start Date",
            "TYPE": "Date"
        },
        {
            "ID": ObjectId("51fd09c28b080ee40c007f2e"),
            "NAME": "Long Description",
            "TYPE": "Memo"
        }
    ],
    "name": "TODB",
    "updated": "Wed Jul 31 2013 08:20:17 GMT-0400 (Eastern Daylight Time)"
}
Run Code Online (Sandbox Code Playgroud)

我访问"名称"和"更新"没有问题,但无法弄清楚如何访问"字段"数组.

代码到目前为止:

{
    MongoServer mongo = MongoServer.Create();
    mongo.Connect();
    var db = mongo.GetDatabase("forms"); 
    mongo.RequestStart(db);
    var collection = db.GetCollection("forms");
    var query = new QueryDocument("name",
    "TODB"); 
    mongo.Disconnect();
}

@foreach(BsonDocument …
Run Code Online (Sandbox Code Playgroud)

c# mongodb bson

19
推荐指数
1
解决办法
6万
查看次数