在MongoDB中我有:
包含嵌入式数组<ul>
@{ int i = 1; }
@foreach (var item in Model.Trucks.Items)
{
<li>
<input type="checkbox" checked id="@i">
</li>
i++;
}
</ul>
的集合customers
:
orders
收藏db.customers.insert([
{_id: 1, name: "John", orders: [
{articleId: 1, quantity: 10},
{articleId: 2, quantity: 5}
]}]);
articles
这个问题与设计无关。我对设计进行了很多调查,因此针对这个问题进行了修正。集合db.articles.insert([
{_id: 1, name: "computer"},
{_id: 2, name: "bike"}
]);
,customers
,orders
不是我的真实案例。我只是把它作为一个例子。
我想要这个结果:
articles
我可以使用以下查询获得此结果:
{_id: 1, name: "John", orders: [
{articleId: 1, name: "computer", quantity: 10},
{articleId: 2, name: "bike", quantity: 5}
]}
这是最好的查询吗?
每个系列都有更多属性。如果收集了2000万db.customers.aggregate([
{ $match: { "_id": 1 } },
{ $unwind: "$orders" },
{
$lookup: {
from: "articles",
localField: "orders.articleId",
foreignField: "_id",
as: "article"
}
},
{ $unwind: "$article" },
{ $addFields: { "orders.name": "$article.name" } },
{ $project: { article: 0 } },
{
$group: {
_id: "$_id",
name: { "$first": "$name" },
orders: { "$push": "$orders" }
}
}
]);
。 customers
每customers
平均orders
customer
。并且说有80 articles
。此查询也在每分钟运行一次。所以我需要尽可能少地使用资源。
或者是否有更智能的查询使用更少的资源获得更好的效果?