我在mongoDB中有一个像这样的对象:
{
"key" : "something"
"meta" : {
"pages" : {
"0" : "http://test.com",
"1" : "http://test2.com",
"2" : "http://test3.com"
}
},
}
我需要搜索" http://test2.com"并得到它的关键。
这是一个非常大的对象,我无法获取所有项目并找到代码密钥。 我需要原生的mongodb查询。
我该怎么做?
由于
答案 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" } }