以下是应返回同一文档的四个陈述,即身份52dfc13ec20900c2093155cf
和电子邮件me@gmail.com
的陈述:
val collection = ReactiveMongoPlugin.db.collection[JSONCollection]("users")
collection.indexesManager.ensure(
Index(List("email" -> IndexType.Ascending), unique = true)
)
// Returns one document, i.e. the one identified by 52dfc13ec20900c2093155cf
collection.find(Json.obj("_id" -> Json.obj("$oid" -> "52dfc13ec20900c2093155cf"))).cursor[JsValue].headOption
// Returns a list containing one element, i.e. the one identified by 52dfc13ec20900c2093155cf
val query = collection.find(son.obj("_id" -> Json.obj("$oid" -> "52dfc13ec20900c2093155cf"))).options(QueryOpts(skipN = 1)).cursor[JsValue].collect[Vector](1)
// Returns the same document as above, but found by email instead of by id
collection.find(Json.obj("email" -> "me@gmail.com")).cursor[JsValue].headOption
// Returns an empty list (it should return the same document as above)
val query = collection.find(Json.obj("email" -> "me@gmail.com")).options(QueryOpts(skipN = 1)).cursor[JsValue].collect[Vector](1)
对find
的前两次调用按预期工作,即返回由给定ID标识的文档。对find
的第三次调用也有效,并返回与之前调用相同的文档。问题是最后一次调用...我希望它返回一个包含一个文档的列表,但事实并非如此。它只返回一个空列表。我错过了什么吗?
答案 0 :(得分:1)
您要求在查询中跳过一条记录。
QueryOpts(skipN = 1))
我认为你不打算这样做?