MongoDB-获取精确的数组元素,其他除外

问题描述 投票:0回答:2

我是MongoDB的新手,正在尝试执行查询以从数据库中找到匹配的文本。下面是提到的细节-

[使用MongoDB,我正在尝试获取注释为DATA NOT FOUND的带注释的文本。通过我的查询,我得到的所有记录的备注均为DATA NOT FOUND以及备注为TOO_MANY_DATA。请参考数据库中存在的以下数据-

输入-

{
    "_id" : ObjectId("aaaaaaaaaaaa"),
    "projectDR" : "123456789",
    "code" : "RRR",
    "fileName" : "123456789_1.xml",
    "specFileDivNumber" : "050000",
    "normalizationStatus" : "ASDWFGL",
    "divisionIn" : {
        "sections" : [ 
            {
                "sectionNumber" : "050000",
                "sectionName" : "textile",
                "labels" : [ 
                    {
                        "normalizedDate" : ISODate("2018-10-28"),
                        "remarks" : "DATA NOT FOUND",
                        "bod" : false,
                        "ID" : "4048",
                        "annotatedText" : "Mains"
                    }, 
                    {
                        "normalizedDate" : ISODate("2018-10-28"),
                        "remarks" : "DATA NOT FOUND",
                        "bod" : false,
                        "ID" : "4064",
                        "annotatedText" : "routong"
                    }, 
                    {
                        "prefCode" : "ABC00000890",
                        "prefLabel" : "ABCRTYYUUUU",
                        "normalizedDate" : ISODate("2018-10-28"),
                        "remarks" : "TOO_MANY_DATA",
                        "bod" : false,
                        "ID" : "15736",
                        "annotatedText" : "Uniform"
                    },

                ]
            }
        ]
    },
    "status" : "Success",
    "fileDate" : ISODate("2018-10-28"),
    "Type" : "History"
}

查询-db.getCollection('BasicInfo').find({'divisionIn.sections.labels.remarks':'DATA NOT FOUND'})

预期输出:

{
    "_id" : ObjectId("aaaaaaaaaaaa"),
    "projectDR" : "123456789",
    "code" : "RRR",
    "fileName" : "123456789_1.xml",
    "specFileDivNumber" : "050000",
    "normalizationStatus" : "ASDWFGL",
    "divisionIn" : {
        "sections" : [ 
            {
                "sectionNumber" : "050000",
                "sectionName" : "textile",
                "labels" : [ 
                    {
                        "normalizedDate" : ISODate("2018-10-28"),
                        "remarks" : "DATA NOT FOUND",
                        "bod" : false,
                        "ID" : "4048",
                        "annotatedText" : "Mains"
                    }, 
                    {
                        "normalizedDate" : ISODate("2018-10-28"),
                        "remarks" : "DATA NOT FOUND",
                        "bod" : false,
                        "ID" : "4064",
                        "annotatedText" : "routong"
                    },                    
                ]
            }
        ]
    },
    "status" : "Success",
    "fileDate" : ISODate("2018-10-28"),
    "Type" : "History"
}

请帮助我更正查询,以便获得期望的结果。

mongodb robo3t
2个回答
0
投票

这是文本搜索的情况。因此,您需要按照以下步骤操作。

  1. 在“备注”字段上创建文本索引。

    db.getCollection('BasicInfo')。createIndex({“ divisionIn.sections.labels.remarks”:“ text”})

  2. 现在运行查询。

    db.getCollection('BasicInfo')。find({$ text:{$ search:'DATA NOT FOUND'}})]]]


0
投票

这是对MongoDB的标准且可理解的数组错误观念。查询条件将产生范围为document


0
投票

这是对MongoDB的标准且可理解的数组错误观念。查询条件将产生范围为document

© www.soinside.com 2019 - 2024. All rights reserved.