【问题标题】:MONGODB - find on "_id" with JAVAMONGODB - 使用 JAVA 在“_id”上查找
【发布时间】:2018-05-06 14:28:45
【问题描述】:

我正在尝试做这个查询:

db.indexInverse.find({_id:ObjectId("5a153409b9c52933c8aab068")}).pretty()

使用 Java ...

实际上我尝试了很多东西...但是找不到我的文档...

Document vraiDoc = collectionIndexInverse.find(Filters.eq("_id", new ObjectId("\"" + idDoc + "\""))).first();

Bson query = (Bson) new BsonString("{ _id:ObjectId(\"" + idDoc + "\")}");
Document vraiDoc = collectionIndexInverse.find(query).first();

Bson query = (Bson) new BsonString("{ _id:ObjectId(idDoc)}");
Document vraiDoc = collectionIndexInverse.find(query).first();

【问题讨论】:

    标签: java mongodb find mongodb-query mongodb-java


    【解决方案1】:

    在您第一次尝试双引号 ObjectId 值时。

    这将起作用:

    Document vraiDoc = collectionIndexInverse.find(
        Filters.eq("_id", new ObjectId("5a153409b9c52933c8aab068"))
    ).first();
    

    更一般地说,鉴于这些文件:

    {
        "_id" : ObjectId("59b86ff639f9ba0f9c0dccf6"),
        ...
    },
    {
        "_id" : ObjectId("59c0e662ac11a822d4e5da27"),
        ...
    } 
    

    以下命令将返回第一个文档...

    find(Filters.eq("_id", new ObjectId("59b86ff639f9ba0f9c0dccf6"))).first();
    

    ...以下命令将返回第二个文档:

    find(Filters.eq("_id", new ObjectId("59c0e662ac11a822d4e5da27"))).first();
    

    【讨论】:

    • 我猜当你写“它已经返回“null””时,你的意思是返回 null:collectionIndexInverse.find(Filters.eq("_id", new ObjectId("5a153409b9c52933c8aab068")))?如果是这样,那么collectionIndexInverse 确实 包含带有_id: ObjectId("5a153409b9c52933c8aab068") 的文档。如果您更新您的问题以包含取自 collectionIndexInverse 的文档,也许会有所帮助。
    • 优秀。使用 MongoDB 3.12.8。我发现的大多数示例都行不通。 TIA。
    猜你喜欢
    • 1970-01-01
    • 2018-11-10
    • 2016-07-04
    • 1970-01-01
    • 2015-11-08
    • 2014-10-29
    • 2021-04-21
    • 2021-03-15
    • 1970-01-01
    相关资源
    最近更新 更多