BSon对象响应大小问题

时间:2018-06-06 14:13:56

标签: mongodb

我正在尝试以不同的方式测试MongoDB的性能(大学研究)插入和查询相同的数据(使用相同的查询),但是我遇到了一些响应大小的麻烦,我会试着解释一下我是什么做。

我的原始文件格式为:

[{"field":"aaaa","field2":"bbbbb","field3":"12345"},{"field":"cccc","field2":"ddddd","field3":"12345"},{"field":"ffff","field2":"ggggg","field3":"12345"},{"field":"hhhhh","field2":"iiiii","field3":"12345"},{"field":"jjjj","field2":"kkkkk","field3":"12345"},{"field":"lllll","field2":"mmmmm","field3":"12345"}]

1°方法 - 我将整个文件作为文件插入Mongo,但它不接受这种方式,所以我必须在文件前添加“数组”,这个方式:{"Array":[{..},{..},{..},...]},插入后我用

查询
db.collection.aggregate([
     { $match: {_cond_},
     { $unwind: "$Array"},
     { $match: {_cond_},
     { $group: {_id: null, count: {$sum:1}, Array: {$push: "$Array"}}},
     { $project: {"Numero HIT": "$count", Array:1}}
])

检索内部文件数据并计算HITS数量。 (_cond_当然是"Array.field": "aaaa""Array.field": /something to search/)。

2°方法 - 我自己插入每个内部文档:我在一个数组中拆分原始文件(它在行中),然后循环插入每个元素。然后我用:

查询它
db.collection2.find({field: "aaaa"}) (or field: /something to search/)

我正在使用两个不同的集合,每个集合一个,每个集合207/208MB。 一切似乎都很好,然后用1°方法进行查询我得到了这个错误:

BSONObj大小:24002272(0x16E3EE0)无效。大小必须介于0到16793600之间(16MB)

我记得MongoDB的查询响应必须低于16MB,好吧,但是方法1怎么可能给我错误而方法2中的SAME *查询没有说什么?我该如何解决?我的意思是:好的,响应大于16MB,我该如何处理呢?我不能以任何方式做这种查询?我希望我的意思很清楚。

提前致谢

*与SAME我的意思是:

1°方法:

 db.collection.aggregate([
         { $match: {"Array.field":"aaa", "Array.field3": 12345},
         { $unwind: "$Array"},
         { $match: {"Array.field":"aaa", "Array.field3": 12345},
         { $group: {_id: null, count: {$sum:1}, Array: {$push: "$Array"}}},
         { $project: {"Numero HIT": "$count", Array:1}}
    ])

2°方法:

db.collection2.find({field: "aaa", field3: 12345}) 

0 个答案:

没有答案