按值搜索并获取mongodb中的密钥

时间:2018-01-21 10:09:21

标签: mongodb

我在mongoDB中有一个像这样的对象:

{
"key" : "something"
"meta" : {
        "pages" : {
            "0" : "http://test.com",
            "1" : "http://test2.com",
            "2" : "http://test3.com"
       }
    },
}

我需要搜索" http://test2.com"并得到它的关键。

这是一个非常大的对象,我无法获取所有项目并找到代码密钥。 我需要原生的mongodb查询。

我该怎么做?

由于

1 个答案:

答案 0 :(得分:2)

您可以对索引页面进行文字处理并对其进行$text搜索

或者可以使用$objectToArray将对象转换为数组并找到匹配的元素

db.t2.aggregate(
    [
        {$addFields : { keys : {$objectToArray : "$meta.pages"} }},
        {$project : {
                match : { $arrayElemAt : [  {$filter : {input : "$keys" , as : "k", cond : {$eq : ["$$k.v" , "http://test2.com"]} }}, 0] } 
             }
        }
    ]
)

结果

{ "_id" : ObjectId("5a64678f66db54bf9993881f"), "match" : { "k" : "1", "v" : "http://test2.com" } }