mongodb中是否有类似节点的语句



我想过滤json文件的子数组中的十进制值。在下面的示例代码中,我想应用like函数来获得下面示例文件中的json值,如(t1,t2(。

样本代码:

db.getCollection('temp').find({},{"temp.text./.*t.*/.value":1})

Json文件示例:

{
"_id" :0"),     
"temp" : {
"text" : {
"t1" : {
"value" : "960"
},
"t2" : {                               
"value" : "959"
},
"t3" : {                
"value" : "961"
},
"t4" : {               
"value" : "962"
},
"t5" : {                               
"value" : "6.0"
}
}
}   
}

MongoDB除了投影之外,没有直接过滤字段名的方法,这只是精确匹配。

但是,使用聚合可以使用$objectToArray,它将把对象{"t1" : {"value" : "960"}}转换为[{"k":"t1","v":{"value":"960"}}]。然后,您可以根据k的值进行筛选,并使用$arrayToObject将左边的条目转换回一个对象。

.aggregate([
{$addFields:{
"temp.text":{
$arrayToObject:{
$filter:{
input:{$objectToArray:"$temp.text"},
cond:{
$regexMatch:{
input:"$$this.k",
regex:/t/
}
}             
}
}
}
}}
])

游乐场

相关内容

  • 没有找到相关文章

最新更新