通过内部键索引MongoDB集合

nzk0hqpo  于 2023-02-07  发布在  Go
关注(0)|答案(1)|浏览(87)

我在一个集合中有这样的文档:

`{
"_id": { "$oid": "63c6c823131d0b01d353b8d7" },
"customer_id": "5a4c8b63b7055a9109477c5b",
"couponId": "63c6c823131d0b01d353b8d6",
"prefix": 999,
"amount": 1000,
"used": 12,
"keys": {
     "375354522485": {
         "id": "375354522485",
         "used": true
     },
     "375354538550": {
         "id": "375354538550",
         "used": false
     },
     "375354549291": {
         "id": "375354549291",
         "used": false
     }
   }
}`

对象中的键的数量可以是数千(200,000)
我尝试在mongoose中按id索引键,如下所示:

CouponSeriesSchema.index({ 'keys.*$*.id': 1 });

但是索引大小没有意义,它是20.5KB,而_id索引是36.9KB,我希望这个索引大小要大得多,我应该如何索引id的?

vc9ivgsu

vc9ivgsu1#

更聪明的设计是这样的:

{
"_id": { "$oid": "63c6c823131d0b01d353b8d7" },
"customer_id": "5a4c8b63b7055a9109477c5b",
"couponId": "63c6c823131d0b01d353b8d6",
"prefix": 999,
"amount": 1000,
"used": 12,
"keys": [
     {
         "id": "375354522485",
         "used": true
     },
     {
         "id": "375354538550",
         "used": false
     },
     {
         "id": "375354549291",
         "used": false
     }
   ]
}

那么索引{ 'keys.id': 1 }就可以了。

相关问题