C/C++嵌入lua

MongoDB存储大小跟文档数量有很大关系。这句话的意思是,同样的信息集,
将其分割成多文档存储与将其分割成多个内嵌对象,放在一个文档的数组里面是有天壤之别的。
总的来说:
(1)前者操作(CURD)更容易一些,后者更困难一些(数组提供的限定操作api)。
但前者的存储空间会比后者占用大很多。
(2)数组的操作api基本可以满足一般需求。可以通过aggregate以及3.2版本提供的filter,完成一些高级操作。
(3)数组的更新有个致命问题,就是不能同时更新同一数组内的多个对象。起码暂时没有。
当然有将多个对象插入或删除的api,但没有更新api。
(4)单文档的插入速度会随着该文档的大小变大而变差。
普通PC上面跑的服务,文档达到5M后,一次update耗时0.1秒左右
(5)单文档最大大小目前支持16M,当然官方也提供的api处理超过16M的情况。
单实测情况,单文档16M后基本变得不可用。
(6)若需提高操作效率,需要控制单文档大小在合理范围。太小会浪费存储空间,太大会导致操作慢。
(7)若数组过大,可考虑用多个文档,采用存放链表指针(存放下个文档的id)实现长链表。

所以综合场景,按需设计数据结构,在存储容量及实现难度、操作复杂度进行综合设计。