【发布时间】:2018-08-06 23:44:12
【问题描述】:
一个用户有很多付款,一个付款有很多债务人,一个债务人属于一个用户。
我正在尝试查找与另一个特定用户相关的用户付款。
我有一个获取用户付款的查询,其中填充了每个债务人的所有债务人和用户信息。
const user_1 = await this.userModel
.findOne({email: "geoffery.brown@gmail.com"})
.populate({path: 'payments', populate: {path: 'debtors', populate: {path: 'user'}}})
返回类似这样的内容:
{
"payments": [
{
"debtors": [
{
"_id": "5a9531b0de918e42c94947cc",
"amount": 15,
"user": {
"payments": [],
"created_at": "2018-02-27T10:14:39.847Z",
"_id": "5a95300388740142774f49c9",
"first_name": "John",
"last_name": "Smith",
"email": "john.smith@gmail.com",
"__v": 0
},
"__v": 0
},
{
"_id": "5a9531b0de918e42c94947cd",
"amount": 10,
"user": {
"payments": [],
"created_at": "2018-02-27T10:14:39.847Z",
"_id": "5a95302188740142774f49ca",
"first_name": "Joe",
"last_name": "Blogs",
"email": "joe.blogs@hotmail.com",
"__v": 0
},
"__v": 0
}
],
"created_at": "2018-02-27T10:23:31.561Z",
"_id": "5a9531b0de918e42c94947ce",
"date": "2018-02-26T10:54:36.167Z",
"reference": "Food",
"__v": 0
}
],
"created_at": "2018-02-27T10:14:39.847Z",
"_id": "5a952fc488740142774f49c8",
"first_name": "Geoffery",
"last_name": "Brown",
"email": "geoffery.brown@gmail.com",
"__v": 0
}
我想让我的 mongo 查询能够过滤email === "john.smith@gmail.com" 所在的债务人
我当前的 mongodb 结构可以做到这一点吗?
【问题讨论】:
-
类似
.populate({path: 'payments', populate: {path: 'debtors', populate: {path: 'user’,match: { email: "john.smith@gmail.com" }}}}) -
@Veeram 它实际上并没有起作用。它仍在返回其他债务人,但会截断用户数据。我需要从债务人数组中截断谁债务人对象
标签: node.js mongodb mongoose aggregation-framework