【问题标题】:Mongodb Aggregate lookup all products from one specific clientMongodb 聚合查找来自一个特定客户端的所有产品
【发布时间】:2018-03-18 00:13:57
【问题描述】:

我有一个来自 .data 的数据库和这些集合:clientes、mercancias 和 vagones。我想从同一个客户那里找到 mercancias 的所有数据。所以在这种情况下,“Electronica Chispas”在数据库中有 2 个“mercancia”实体:

[{"cliente": {"nombre": "Cafes el amanencer"},
 "mercancia": {"envio": "Normal", "tipo": "Gaseoso", "fecha": "24/12/2003", "peso": 21, "volumen": 43, "origen": "Cadiz", "destino": "Castellon"},
 "vagon": {"id": 1330, "volumen": 202, "peso": 433 }},{"cliente": {"nombre": "Electronica Chispas"}, "mercancia": {"envio": "Normal", "tipo": "Liquido", "fecha": "08/02/2005", "peso": 17, "volumen": 24, "origen": "San Sebastian", "destino": "Orense"}, "vagon": {"id": 1290, "volumen": 111, "peso": 464 }},{"cliente": {"nombre": "Electronica Chispas"}, "mercancia": {"envio": "Urgente intradia", "tipo": "Contaminante", "fecha": "15/09/2002", "peso": 11, "volumen": 83, "origen": "Valladolid", "destino": "Ciudad Real"}, "vagon": {"id": 1315, "volumen": 115, "peso": 481 }}]

我正在尝试这个查询:

db.mercancias.aggregate([{$lookup:{'from': 'clientes', 'localField':'destino', 'foreignField': 'nombre', 'as': 'clientes'}}])

但它并没有按照我的意愿工作。当然,我想在该查询中的某处写下“Electronica Chispas”名称,但我不确定在哪里写。

【问题讨论】:

  • 您可以添加其他收藏中的文档吗?你的预期输出是什么?
  • 我的预期输出是“Orense”和“Ciudad Real”,或者如果我能得到“mercancia”的所有信息,那也没关系。这两个是来自个人/客户“electronica chispas”的“Mercancias”的“命运”。我知道“electronica chispas”这个名字不在哪里,但我不知道在哪里写。@Veeram
  • 我没有看到客户和 mercancias 之间的任何连接键。您加入这两个系列的标准是什么?我假设您在邮寄中记录订单的方式来自不同的收藏。
  • 嗯,第一三行(cliente、mercancias、vagon)在数据库中具有相同的 id。 mercancia(我们在现实生活中假设)来自客户“cafes del amanecer”。其他 2 个 mercancias 来自“Electronica Chispas”。因此,我想获取来自 1 个提供其名称的客户的所有 mercancias(在本例中,例如“Electronica Chispas”)。 @Veeram
  • 好的。我不确定你为什么要加入收藏。您可以搜索集合。试试db.mercancias.aggregate([{$match:{'cliente.nombre': "Electronica Chispas"}}])

标签: database mongodb nosql aggregate nosql-aggregation


【解决方案1】:

在 MongoDB 中,重复数据既不重要也不是问题!

确定如何加入是不可能的。我决定添加mercanciasvagonidnombreclientes,以便可以命名关系。这样,就不需要在 mongo 中执行 LookUp,并且可以完成“简单”的 aggregate 查询!

【讨论】:

    猜你喜欢
    • 2021-03-06
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    相关资源
    最近更新 更多