我有一个要动态匹配其值的元素。 唯一的区别是DB中的值与下划线连接,而我得到的值没有下划线。因此,有什么方法可以根据我得到的值修改值并应用“查找”。
收藏:
"name": {
"age": 23,
"firstname": "sweta",
"secondname": "sharma"},
"hobbyImages": [
0: "0_abc_0.jpg",
1: "1_def_1.jpg"
]
}
查询:
db.find({ "name.age": 23, "hobbyImages": imageName });
我的图像名称为abc.jpg
预期结果:
我上面提到的收藏,但没有得到任何东西。 有谁知道如何删除“ _”和“ 0”,然后检查元素值?
答案 0 :(得分:1)
您可以尝试将图像与$regex
匹配。
const [name, ex] = imageName.split('.');
const regex = new RegExp(`\\d_${name}_\\d.${ex}`, "gi")
db.users.find(
{ "name.age": 23, "hobbyImages": { "$elemMatch": { "$regex": regex } } }
)