find方法的快照选项不起作用

时间:2013-08-12 21:48:44

标签: mongodb mongoose

我的代码

方法1:

...
var cursor = collection.find({}, {snapshot: true});
//i made sure to insert a new document to the collection before the below timer fires
setTimeout(function(){
    cursor.each(function(err, docu){
        console.log("cursor items", docu);
    })
}, 15000);

方法2:

var cursor = collection.find({}, {snapshot: true});
cur.nextObject(function(err, item) {
    console.log("Read the first doc alone", item)
})
//i made sure to insert a new document to the collection before the below timer fires
setTimeout(function(){
    cursor.each(function(err, docu){
        console.log("cursor items", docu);
    })
}, 15000);

对于这两种方法,我启动了应用程序,在接下来的15秒内,我手动将一行插入到同一个数据库中。

方法1输出已存在的行和我在15秒内插入的行。

方法2立即输出第一行,此方法不打印我在15秒内插入的行,而不管{snapshot:true}或{snapshot:false}

问题

  1. 为什么snapshot方法的find选项在方法1中无效
  2. 在方法2中给予{snapshot: true}{snapshot: false}不打印 我手动插入的文件。
  3. 请告诉我任何解释游标行为的网站。
  4. 按照下面的@Scott Hernandez尝试,但新插入的文档将出现在快照光标中。

    var SimpleSchema = new mongoose.Schema({
        name:{type:String}
    }, {collection:'simple'});
    var SimpleModel = mongoose.model('SimpleModel', SimpleSchema);
    
    //var snapshotQuery = SimpleModel.find({}).setOptions({snapshot:true}); //try method 1
    var snapshotQuery = SimpleModel.find({}).snapshot(true);                //try method 2
    
    setTimeout(function(){
        snapshotQuery.exec(function(err, docs){
            if(err){
                console.log("ERROR", err);
            }else{
                console.log("setTimeout", docs);
            }
        })
    },10000)
    

1 个答案:

答案 0 :(得分:0)

格式不正确。您必须使用文档中描述的snapshot method