Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在mongodb中按日期对值排序_Java_Mysql_Mongodb_Mongodb Query - Fatal编程技术网

Java 在mongodb中按日期对值排序

Java 在mongodb中按日期对值排序,java,mysql,mongodb,mongodb-query,Java,Mysql,Mongodb,Mongodb Query,我是mongodb的新手,我正在尝试按日期对所有行进行排序。我有来自不同来源的记录,我试图将它们分开分类。在将某些记录写入数据库时,我没有更新创建的日期。后来,我找到并将dateCreated添加到数据库中的所有记录中。假设我总共有4000条记录,前1000条我没有dateCreated。最新的3000人有这个专栏。在这里,我试图使用dateCreated列获取上次更新的记录。这是我的密码 db.person.find({"source":"Naukri"}&{dateCreated:{

我是mongodb的新手,我正在尝试按日期对所有行进行排序。我有来自不同来源的记录,我试图将它们分开分类。在将某些记录写入数据库时,我没有更新创建的日期。后来,我找到并将
dateCreated
添加到数据库中的所有记录中。假设我总共有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
    排序以获得最新更新的记录,以及按来源排序

  • 我正在使用JavaAPI从Mongo获取记录。如果有人能帮助我找到如何在java中使用相同的查询,我将不胜感激


  • 希望我的问题清楚。提前感谢。

    您的查询不正确。请按以下方式更新:

    db.person.find({"source":"Naukri", dateCreated:{$exists:true}}).sort({dateCreated: 1}).limit(10)
    
    Mongo mongo = ...
    DB db = mongo.getDB("yourDbName");
    DBCollection coll = db.getCollection("person");
    
    DBObject query = new BasicDBObject();
    query.put("source", "Naukri");
    query.put("dateCreated", new BasicDBObject($exists : true));
    
    DBCursor cur = coll.find(query).sort(new BasicDBObject("dateCreated", 1)).limit(10);    
    while(cur.hasNext()) {
        DBObject obj = cur.next();
        // Get data from the result object here
    }
    
    在Java中,可以按如下方式执行:

    db.person.find({"source":"Naukri", dateCreated:{$exists:true}}).sort({dateCreated: 1}).limit(10)
    
    Mongo mongo = ...
    DB db = mongo.getDB("yourDbName");
    DBCollection coll = db.getCollection("person");
    
    DBObject query = new BasicDBObject();
    query.put("source", "Naukri");
    query.put("dateCreated", new BasicDBObject($exists : true));
    
    DBCursor cur = coll.find(query).sort(new BasicDBObject("dateCreated", 1)).limit(10);    
    while(cur.hasNext()) {
        DBObject obj = cur.next();
        // Get data from the result object here
    }
    

    从您将要阅读的文档(您将要阅读,不是吗-nod yes)中,您将发现您正在使用的find命令的第一个参数是所谓的查询文档。在本文档中,您指定了字段和条件的列表,“逗号”分隔,这相当于SQL等声明性语法中的条件

    您的查询的问题是它无效,并且与任何内容都不匹配。正确的语法如下所示:

    db.person.find({"source":"Naukri", dateCreated:{$exists:true}})
        .sort({dateCreated: -1})
        .limit(10)
    
    因此,现在它将通过为“source”提供的
    值和“dateCreated”字段所在的位置进行过滤,这意味着它在那里并且包含一些内容

    我建议查看下面的链接,这两个链接中的第一个涉及构造mongoDB查询和find方法及其参数。所有的功能都转化为每种语言的实现

    至于javaapi和如何使用,有不同的方法,这取决于您是否熟悉。API提供了一个或多或少与JSON文档表示法等效的类,它有点像hashmap概念。为了更接近shell方法,帮助程序更像一些动态语言方法,有一个QueryBuilder类,最后两个链接给出了该类的示例和信息。这些允许链接使查询更具可读性

    单是堆栈溢出就有很多例子。我建议你看看


    符号和来自哪里?这不是有效的语法..我想非常感谢您的时间和找到我犯的错误。我很感谢你。你详细的回答对我很有帮助。我知道(,)在mysql中等于(&)。我不知道我怎么会犯这么简单的错误。虽然你的回答让我去研究文档,在那里我可以提高我的知识。我再次感谢你们花了这么多时间给我一个如此简短而美丽的回答。