表结构
{
data_list : ['2:333','3:222','xxx'],
sid: '1111111111111'
}
要求返回 data_list 中符合指定正则的元素 /2:/
{
sid:'1111111111111',
data_list: ['2:333']
}
# 现在是用 find 可以做到,如果用 aggregate 怎么做呢?
db.score.find(
{sid:'1111111111111',data_list:/^2:/},
{"data_list.$": 1, sid:1 }
)
1
lithiumii 2021-07-11 21:30:07 +08:00 via Android
先 unwind 再 match ?
|
2
wuwukai007 OP @lithiumii unwind 试了下,可以做到,但是效率有点低。
|
3
catinsides 2021-07-11 23:43:34 +08:00
不知道你用的什么版本,4.2 可以这样:
db.test.aggregate([{ $project: { data_list: { $filter: { input: '$data_list', as: 'd', cond: { $regexMatch: { input: '$$d', regex: /^2:/ } } } } } }]) |
4
wuwukai007 OP @catinsides 我昨天也搜到了$regerxMatch,但是服务器是 4.0.19 的版本的😭
|