小程序
小游戏
企业微信
微信支付
扫描小程序码分享
各位前辈,数据库中有这样一个结构的数据:
现在想按日期来筛选,比如筛选 2019-10-1到2019-10-31 的数据,使用云开发该怎么写呢?我看文档好像都是说的怎么按键值筛选,现在要对key进行筛选该怎么操作呢?
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
你硬是要那样设计也可以
统计2019 - 10
var _ = db.command,
$ = _.aggregate
db.collection('xxx').aggregate()
.project({
myNewField: $.objectToArray('$number_available')
})
.unwind('$myNewField')
.match({
'myNewField.k': /^2019-10/
.group({
_id: $.substr(['$myNewField.k', 0, 7]),
count: $.sum('$myNewField.v')
.end().then(res => {
console.log(res)
==============
统计2019
'myNewField.k': /^2019/
_id: $.substr(['$myNewField.k', 0, 4]),
按年统计
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
不懂后端,我做的话可能是切割字符串匹配字段
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
你硬是要那样设计也可以
统计2019 - 10
var _ = db.command,
$ = _.aggregate
db.collection('xxx').aggregate()
.project({
myNewField: $.objectToArray('$number_available')
})
.unwind('$myNewField')
.match({
'myNewField.k': /^2019-10/
})
.group({
_id: $.substr(['$myNewField.k', 0, 7]),
count: $.sum('$myNewField.v')
})
.end().then(res => {
console.log(res)
})
==============
统计2019
db.collection('xxx').aggregate()
.project({
myNewField: $.objectToArray('$number_available')
})
.unwind('$myNewField')
.match({
'myNewField.k': /^2019/
})
.group({
_id: $.substr(['$myNewField.k', 0, 4]),
count: $.sum('$myNewField.v')
})
.end().then(res => {
console.log(res)
})
==============
按年统计
db.collection('xxx').aggregate()
.project({
myNewField: $.objectToArray('$number_available')
})
.unwind('$myNewField')
.group({
_id: $.substr(['$myNewField.k', 0, 4]),
count: $.sum('$myNewField.v')
})
.end().then(res => {
console.log(res)
})
{_id:'1', year:2019, month:10, day:1, timestamp:1569859200000, val:1}
{_id:'2', year:2019, month:11, day:1, timestamp:1572537600000, val:2}
设计成这样不好吗
删除2019-11-01日前的记录
db.collection('xxx').where({
timestamp: _.lt(new Date('2019-11-01').getTime())
}).remove()
删除2019年10月11号的记录
db.collection('xxx').where({
year: 2019 ,
month: 10,
day:1 1
}).remove()
删除2019年的记录
db.collection('xxx').where({
year: 2019
}).remove()
不懂后端,我做的话可能是切割字符串匹配字段