我是mongodb的新手,我正在尝试按日期对所有行进行排序.我有混合来源的记录,我试图分开排序.某些记录在写入db时我没有更新dateCreated.后来我发现并将dateCreated添加到db中的所有记录中.假设我总共有4000条记录,前1000条我没有dateCreated.最新的3000有该专栏.在这里,我试图使用dateCreated列获取最后更新的记录.这是我的代码.
db.person.find({"source":"Naukri"}&{dateCreated:{$exists:true}}).sort({dateCreated: 1}).limit(10)
这段代码重新给我一些结果(来自那1000条记录)我根本看不到dateCreated列.此外,如果我在这里更改(-1){dateCreated:-1}我从其他来源获得结果,但不是Naukri.
所以我需要帮助这个案例,
>我如何按dateCreated排序以获取最新的更新记录和来源.
>我正在使用Java API从Mongo获取记录.如果有人帮助我找到如何使用java同样的查询,我将不胜感激.
希望我的问题很明确.提前致谢.
解决方法:
从文档中你将(并且你将会,不会 – 点头是)读取,你会发现你正在使用的find命令的第一个参数是所谓的查询文档.在本文档中,您指定了一个字段和条件列表,“逗号”分隔,这相当于声明性语法(如SQL)中的条件和条件.
您的查询的问题是它无效,并且没有匹配任何内容.正确的语法如下:
db.person.find({"source":"Naukri", dateCreated:{$exists:true}})
.sort({dateCreated: -1})
.limit(10)
所以现在这将过滤为“source”提供的值以及“dateCreated”字段存在的位置,这意味着它存在且包含某些内容.
我建议查看下面的链接,这两个链接中的第一个涉及构造mongoDB查询以及find方法及其参数.所有功能都转换为每种语言实现.
至于Java API以及如何使用,根据您的使用情况,有不同的方法. API提供了一个BasicDBObject类,它或多或少等同于JSON文档表示法,并且是一种hashmap概念.对于shell方法的更多内容和帮助器更像一些动态语言方法,有一个QueryBuilder类,后两个链接给出了示例和信息.这些允许链接使您的查询更具可读性.
Stack Overflow上有很多例子.我建议你看看.