mongodb游标快照
示例代码
1. 初始数据
> db.snapshot_test.find() { "_id" : ObjectId("560ba37c694895b2de42254d"), "name" : "lxy" } { "_id" : ObjectId("560ba381694895b2de42254e"), "name" : "zyh" } { "_id" : ObjectId("560ba38a694895b2de422550"), "name" : "zjj" } { "_id" : ObjectId("560feb75f31b120ca7308011"), "name" : "yhl" }
2. 给name=zjj的行添加age字段,增加行占用的空间
> db.snapshot_test.update({name:"zjj"},{$set:{name:"zjj",age:10}})
3. 返回查询
> db.snapshot_test.find() { "_id" : ObjectId("560ba37c694895b2de42254d"), "name" : "lxy" } { "_id" : ObjectId("560ba381694895b2de42254e"), "name" : "zyh" } { "_id" : ObjectId("560feb75f31b120ca7308011"), "name" : "yhl" } { "_id" : ObjectId("560ba38a694895b2de422550"), "name" : "zjj", "age" : 10 }
因为第三行的占用空间增大,mongdb会重新给第三条记录分配内存空间,并添加到集合的尾部
4. 快照查询结果
> db.snapshot_test.find().snapshot() { "_id" : ObjectId("560ba37c694895b2de42254d"), "name" : "lxy" } { "_id" : ObjectId("560ba381694895b2de42254e"), "name" : "zyh" } { "_id" : ObjectId("560ba38a694895b2de422550"), "name" : "zjj", "age" : 10 } { "_id" : ObjectId("560feb75f31b120ca7308011"), "name" : "yhl" }
从返回的结果可以看出,第三行记录的顺序变回和修改空间大小之前的位置