我正在尝试以不同的方式测试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})