MongoDB $查找嵌套数组性能&最佳实践问题

时间:2018-05-10 06:22:26

标签: mongodb mongodb-query aggregate

在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"} ]); customersorders不是我的真实案例。我只是把它作为一个例子。

我想要这个结果:

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" } } } ]); customerscustomers平均orders customer。并且说有80 articles。此查询也在每分钟运行一次。所以我需要尽可能少地使用资源。

或者是否有更智能的查询使用更少的资源获得更好的效果?

0 个答案:

没有答案