await db.collection('products').where(_.expr(
$.eq([
$.arrayElemAt(['$parentPId', -1]),
productId
])
)).update({
data: dataForUpdate
})
数据库大概100万条记录,parentPId为数组型字段,已加索引。这个操作耗时15秒是否正常?
如果直接用类似这样的语句就不会慢,1秒以内:
await db.collection('products').where({
parentPId: productId
}).update({
data: dataForUpdate
})
这是底层有问题?能优化吗?我也可以有绕开的办法,就是把数组字段parentPId的最后一个元素冗余,单独存一个字段出来。但是这里做冗余实属有点多余,如果可以直接优化最好。
只能建议你优化表结构了。具体怎么改,信息不足。