Tags golang
1899-11-30 00:00:00
#MGO 设计调优。 > 真的是那句话,不是你不行,知识你不了解。而已。
流量控制肯定也是必须的。
FindOne就够了吗?我确实遇到这个坑了。在博文中已经提到关于这种情况适用filter的方法了。直接参考就OK了。
FindOne({_id:xxx},{Items:{"$slice":[3,1]}})
虽然适用了这种方法来设计,使得查询结果减少流量降低了。但是依然存在问题 1. 一定更要注意,不能直接dbref因为slice不好加啊。可以用过顺序id加分页,或者算时间。233 很实用,典型的用空间换时间。
db.user.findOne({user_id:2}, {"book.price":1,"book.price.":{$slice:[-10,4]}})
解释下其含义哈:
1. user集合
2. user.book.price 表示用户拥有书籍, 书籍呢有很多价格列表
3. 注意红色字体 "book.price." 末尾必须有个点
4. 查找价格列表里的4条数据, 从右边第10个位置开始便宜
但是也有不同的语法说明,到时候试试吧。
update 要做精细修改。
比如Update({_id:xxx},{$set:{"Items.3.Item.Health":38}});//修改第三把武器的健康值
至于一次修改和批量修改,MongoDB默认100ms flush一次(2.x),只要两次修改比较贴近,被一起保存的可能性很高。
上面这些是引用别人说的话,还是全要直接精细修改,然后数据库会自动一起修改的,性能不成问题