【发布时间】:2020-01-28 21:53:43
【问题描述】:
我正在尝试构建一个查询以从我的 mongoDB 中获取信息,但我需要过滤结果并仅获取相应的值。
这是我迄今为止尝试过的方式。我需要将 costsHouse._id 与我将在链接中传递的 id 匹配。
router.get("/showExpense/:id", ensureAuthenticated, (req, res) => {
House.aggregate([
{
expensesHouse: {
$filter: {
input: "$expensesHouse",
as: "each",
cond: { $eq: ["$$each._id", req.params.id] }
}
}
}
]).then(house => {
console.log(house);
res.render("houses/showExpense", {
house: house
});
});
以下屏幕是 mongodb 架构。 我需要从 costsHouse 中获取每个值,但只有我通过的“id”才需要与 costsHouse.ID 匹配
得到结果后,我需要在车把中使用它们
<form>
{{#each house}}
{{#each expensesHouse}}
<div class="form-group">
<label for="expenseType" class="text-dark">Expense Type</label>
<input type="text" class="form-control" name="expenseType" value="{{expenseType}}" disabled>
</div>
<div class="form-group">
<label for="description" class="text-dark">Description</label>
<input type="text" class="form-control" name="description" value="{{description}}" disabled>
</div>
<div class="form-group">
<label for="price" class="text-dark">Price</label>
<input type="text" class="form-control" name="price" value="{{price}}" disabled>
</div>
<div class="form-group">
<label for="status" class="text-dark">Price</label>
<input type="text" class="form-control" name="status" value="{{status}}" disabled>
</div>
{{/each}}
{{/each}}
</form>
【问题讨论】:
-
expensesHouse需要包裹在$project阶段 -
我得到这个结果:[ { _id: 5e2dea5f71cbdd1a6dd1c8fc, costsHouse: [] }, { _id: 5e2debbf30b9cd1aa5aca711, costsHouse: [] }, { _id: 5e2f57ad63e463338bc44f9a, costs: 5e2f5b3163e463338bc44f9c, costsHouse: [] } ] 这是我所有的房子,但没有给我正确的费用。
-
我猜你应该使用
ObjectId对象而不是传递string
标签: node.js mongodb mongodb-query handlebars.js