【问题标题】:Use distinct and skip in a query在查询中使用 distinct 和 skip
【发布时间】:2014-01-16 16:09:23
【问题描述】:

我试过运行这个:

db.col.find().skip(5).distinct("field1")

但它会引发错误。

如何搭配使用?

我可以使用聚合但结果不同:

db.col.aggregate([{$group:{_id:'$field1'}}, {$skip:3},{$sort:{"field1":1}}])

我想要的是排序顺序的链接,即数字应该先出现,然后是大写字母,然后是小写字母。

【问题讨论】:

  • 尝试了您的查询。 Got TypeError: db.col.find().distinct("field1") is not a function in shell
  • @u_mudler:是的,我做到了。最初我正在尝试这个: db.col.distinct("field1").skip(5) 但 distinct 返回一个列表而不是光标,因此不能在此使用跳过。
  • 好的,真是个好问题。
  • 这是一个类似的问题,但它是通过聚合框架完成的:stackoverflow.com/questions/16055868/…

标签: mongodb pymongo


【解决方案1】:

必须在 COLLECTION 而不是游标上运行不同的方法并返回一个数组。读这个 http://docs.mongodb.org/manual/reference/method/db.collection.distinct/ 所以你不能在不同后使用跳过。

也许你应该使用这个查询 db.col.aggregate([{$group:{_id:'$field1'}}, {$skip:3},{$sort:{"_id":1}}]) 因为字段 field1 在分组的第一个子句之后的结果中将不存在。

另外我认为你应该先排序然后跳过,因为在你的查询中你会跳过 3 个未排序的结果然后对它们进行排序。

(如果您提供有关文档结构的更多信息以及您想要的输出内容会更清楚,我会正确地更正答案)

【讨论】:

    猜你喜欢
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多