使用.limit()似乎会导致游标/变量中没有文档



我试图检索一个有限的游标只有2个文档,但我的变量总是空的,如果我使用limit()。

有谁能解释这种行为吗?我只是不确定我做错了什么。

> myCursor = db.raw.incomingdata.find({'dat_type': 'foo'}, {'_id': 1}).sort({'_id' : 0}).limit(2);
{ "_id" : ObjectId("51a8b24d02292b2fb3000001") }
{ "_id" : ObjectId("519fd10a02292b0ede000002") }
> myCursor
>

注意,'myCursor'不返回任何东西,当我期望它有2个对象。

> myCursor2 = db.raw.incomingdata.find({'dat_type': 'foo'}, {'_id': 1}).sort({'_id' : 0}); 
{ "_id" : ObjectId("519fd10a02292b0ede000002") } 
{ "_id" : ObjectId("519fd10602292b0ede000001") } 
{ "_id" : ObjectId("519fcc3402292b6e0e000002") } 
{ "_id" : ObjectId("519fcc3002292b6e0e000001") } 
{ "_id" : ObjectId("519fca5802292b60d8000001") } 
{ "_id" : ObjectId("519e81dd02292b6f50000002") } 
{ "_id" : ObjectId("519e81d902292b6f50000001") } 
{ "_id" : ObjectId("519e800e02292b66aa000001") } 
{ "_id" : ObjectId("519e7b1a02292b4851000001") } 
(etc., etc.) 
Type "it" for more
> myCursor2 
{ "_id" : ObjectId("519fd10a02292b0ede000002") } 
{ "_id" : ObjectId("519fd10602292b0ede000001") } 
{ "_id" : ObjectId("519fcc3402292b6e0e000002") } 
{ "_id" : ObjectId("519fcc3002292b6e0e000001") } 
{ "_id" : ObjectId("519fca5802292b60d8000001") } 
{ "_id" : ObjectId("519e81dd02292b6f50000002") } 
{ "_id" : ObjectId("519e81d902292b6f50000001") } 
{ "_id" : ObjectId("519e800e02292b66aa000001") } 
{ "_id" : ObjectId("519e7b1a02292b4851000001") } 
(etc., etc.) 

如何维护第一次调用的数据,就像在第二次调用中一样?

这是因为你已经"执行"了你的光标——而且它已经完成了。

尝试添加

var cursor = ...

现在您将看到文档-但只有一次!

最新更新