在Mongokitten中迭代查找操作的结果

时间:2018-06-11 12:12:07

标签: swift4 mongokitten

我查询MongoDB上的元素并接收2个元素。 但我无法遍历CollectionSlice。 任何想法?

以下是代码:

let elements = database.getAllElements()
do {
    try print("Received: \(elements.count()) elements")
    } catch {
      print(error)
    }
for element in elements {
   print(element)  // ==> should print out the element
}
let documents: [Document] = Array(elements)
for document in documents {
   print(document) // ==> should print out the document
}

输出: 收到:2个元素

// ==>没有元素或文档的打印输出

程序以退出代码结束:0

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

我找到了一个可能的解决方案:
我必须重置光标,如:

do {
  try elements.reset()
} catch {
  print(error)
}

但为什么我必须先将光标重置? 有人可以回答这个问题。

答案 1 :(得分:0)

MongoDB中的游标是查询的结果流。一旦耗尽,就没有更多的文档,这意味着重复迭代游标等于继续迭代。由于光标已耗尽,因此不再有结果。

重置光标有效地再次发送查询并流式传输这些结果。 迭代游标两次是不好的做法,最好只处理一次游标,因为这会对应用程序和数据库产生重大的性能影响。

相关问题