【问题标题】:Updating the most recent document in mongoDB with all fields value same except for the timestamp field through Java通过 Java 更新 mongoDB 中的最新文档,除时间戳字段外,所有字段值都相同
【发布时间】:2018-10-24 11:56:32
【问题描述】:

我有一个包含 100 个文档的集合,其中 4 个文档的所有字段的值完全相同,只是时间戳值不同。我想更改这 4 个文档中的最新文档。我怎样才能做到这一点?

【问题讨论】:

    标签: java mongodb mongodb-query


    【解决方案1】:

    在具有相同值的字段上查询集合,按时间戳排序并返回最新的。

    const myDoc = db.collection.findOne({ fieldA: 'valA', fieldB: 'valB', ... }).sort({ timestamp: -1 });
    db.collection.update(myDoc, { fieldA: 'newValA', ... });
    

    更新:如何在 java 中查询数据库

    // setup your db connection
    MongoClient client = new MongoClient(...);
    DB db = client.getDB("yourDbName");
    DBCollection collection = db.getCollection("collectionName");
    
    // set up the query for the fields you want to use
    BasicDBObject query = new BasicDBObject();
    query.put("fieldA", "valA");
    query.put("fieldB", "valB");
    // etc
    
    // create the object for sorting by timestamp
    BasicDBObject sort = new BasicDBObject("timestamp", -1);
    
    // query the database
    Document mostRecent = (Document)collection.find(query).sort(sort).first();
    

    【讨论】:

    • 我想要一个相同的 java 代码。你能帮我解决这个问题吗?我是新手,所以在这样做时面临困难。
    • 逻辑将是相同的,您只需将其“翻译”为您的 java API。 i) 创建查询对象 (BasicDBObject query = new BasicDBObject();) 并添加字段 (query.put("fieldA", "valA");) 然后用它查询您的数据库。
    • 在 java 中,collection.update 接受 (DBObject,DBObject) 所以当我将第一个参数作为文档传递时它会出错
    猜你喜欢
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 2014-02-05
    • 2014-11-15
    • 1970-01-01
    相关资源
    最近更新 更多