【问题标题】:mongo Java search by arraymongo Java 按数组搜索
【发布时间】:2016-10-27 10:36:13
【问题描述】:

我已经使用 mongo 工作了几个月,现在我很挣扎。

这是我的数据库的文档示例:

"_id" : ObjectId("5732d96fed40761e640a3f3e"),
"_familyId" : "12345",
"_applications" : [
{
    "_applicationRID" : "123456",
    "_applicationDate" : "01012000",
    "_isRepresentative" : false,
    "_applicationId" : {
            "CC" : "AB",
            "SN" : "123456789",
            "KC" : "A"
    },
    "_publications" : [
    {
        "_publicationRID" : "123456789",
        "_publicationDate" : "01012000",
        "_flaId" : "AB123456789A",
        "_publicationId" : {
                "CC" : "AB",
                "SN" : "1234567",
                "KC" : "B"
        }, 

[...] 

现在,我正在尝试在 Java 中对数组执行 collection.find()。 我知道_publicationId 中包含的所有字段,我需要在_publicationId 上进行搜索,因为它有索引,但里面没有字段。

在 shell 中是:

db.collection.find({
    "_applications._publications._publicationId": {
        "CC": "AB",
        "SN": "1234567",
        "KC": "B"
    }
})

这很好用。

使用java,我找不到正确的语法:

collection.find("_applications._publications._publicationId",  ??? )

【问题讨论】:

    标签: java mongodb mongodb-query mongo-java-driver


    【解决方案1】:

    您应该尝试使用实际上与您在 java 中的查询完全等效的下一个类型的查询:

    DBObject query = new BasicDBObject(
        "_applications._publications._publicationId",
        new BasicDBObject("CC", "AB").append("SN", "1234567").append("KC", "B")
    );
    DBCursor cursor = collection.find(query);
    

    【讨论】:

    • 感谢您的快速答复!效果很好!
    猜你喜欢
    • 2018-05-18
    • 2017-09-17
    • 2013-12-06
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 2018-06-13
    • 2017-08-08
    相关资源
    最近更新 更多