【发布时间】:2017-12-28 15:07:55
【问题描述】:
我的猫鼬模式结构有点像这样:
{
"_id": {
"$oid": "59d00283893f4500127271f6"
},
"__v": 0,
"bills": [
{
"timestamp": 1513539218509,
"table_no": 2,
"user_id": {
"$oid": "59cf912782b85b0012860ecc"
},
"order_id": {
"$oid": "5a36c5979a54980014f06787"
},
"_id": {
"$oid": "5a36c6929a54980014f0678b"
},
"disc_amount": 320,
"amount": 320
},
{
"timestamp": 1513539299486,
"table_no": 2,
"user_id": {
"$oid": "59cf912782b85b0012860ecc"
},
"order_id": {
"$oid": "5a36c6c99a54980014f0678c"
},
"_id": {
"$oid": "5a36c6e39a54980014f0678f"
},
"disc_amount": 160,
"amount": 160
},
{
"timestamp": 1513540879109,
"table_no": 2,
"user_id": {
"$oid": "59cf912782b85b0012860ecc"
},
"order_id": {
"$oid": "5a36ccfb9a54980014f06790"
},
"_id": {
"$oid": "5a36cd0f9a54980014f06793"
},
"disc_amount": 320,
"amount": 320
},
{
"timestamp": 1513540986507,
"table_no": 2,
"user_id": {
"$oid": "59cf912782b85b0012860ecc"
},
"order_id": {
"$oid": "5a36cd639a54980014f06794"
},
"_id": {
"$oid": "5a36cd7a9a54980014f06797"
},
"disc_amount": 240,
"amount": 320
}
]
}
从子模式 bills 我只想获取仅一周前的那些账单。
我的第一个问题是,首先通过 id 查找 Schema,然后获取其账单并在 bills 数组中进行处理以仅获取上周数据是否是正确的方法。我想这不会有效,因为子模式账单可能太大,因此,获取整个数组并不是一个好主意。那么,正确的方法是什么?
第二个问题,是否有更合适的方式来创建架构并进行查询。(我创建了子架构账单,以便与特定 id 相关的所有账单都保留在一个地方,以便于查询。这效率高吗?)。
欢迎各种建议。提前致谢。
【问题讨论】:
-
使用$filter根据查询条件过滤账单。
标签: node.js database mongodb mongoose