我是Mongo的新手,我正在尝试从find()查询中检索第一个文档:
> db.scores.save({a: 99});
> var collection = db.scores.find();
[
{ "a" : 99, "_id" : { "$oid" : "51a91ff3cc93742c1607ce28" } }
]
> var document = collection[0];
JS Error: result is undefined
Run Code Online (Sandbox Code Playgroud)
这有点奇怪,因为一个集合看起来很像一个数组.我知道使用findOne(),但是有可能从集合中删除一个文档吗?
cha*_*sos 12
该find方法返回一个游标.这类似于结果集中的迭代器.如果您有太多结果并尝试在屏幕上全部显示它们,则shell将仅显示前20个,并且光标现在将指向结果集的第20个结果.如果键入it,则会显示下20个结果,依此类推.
在你的例子中,我认为你已经在shell中隐藏了一行.
这个命令
> var collection = db.scores.find();
Run Code Online (Sandbox Code Playgroud)
将结果分配给collection变量,不会在屏幕上打印任何内容.所以,这让我相信你也跑了:
> collection
Run Code Online (Sandbox Code Playgroud)
现在,真正发生了什么.如果您确实使用了上述命令来显示内容collection,那么光标将到达结果集的末尾(因为您的集合中只有一个文档)并且它将自动关闭.这就是你找回错误的原因.
你的语法没有错.您可以随时使用它.只需确保光标仍然打开并有结果.您可以使用该collection.hasNext()方法.