我有一个字段priority
,后面附加了随机产生的ex“:
"priority_123":"HIGH" ,"priority_234"..."HIGH"
我想以某种方式使用正则表达式查询优先级字段的值
{"priority_":"HIGH"}
是否可以更改保存字段的结构?
请帮助我
答案 0 :(得分:0)
我认为可以实现的一种(也许是唯一的)方法是使用$where运算符。
db.collection.find({
$where: function() {
for (var key in this) {
if (key.indexOf('priority_') === 0 && this[key] === 'HIGH') {
return true
}
}
return false
}
})
尽管,正如您所知,它比常规查询要慢得多,因为它使数据库为每个文档执行JavaScript。我不建议您使用此功能,尤其是在您的收藏夹中可能有大量文档的情况下。
一个更好的方法是更改您的结构,就像您已经提到的那样。 也许是这样的吗?
[{
priority: {
salt: '123',
value: 'HIGH',
}
}, {
priority: {
salt: '234',
value: 'HIGH',
}
}]
db.collection.find({
'priority.value': 'HIGH'
})