如何通过聚合连接mongoDB中的两个表并需要根据匹配获取结果[重复]

Posted

技术标签:

【中文标题】如何通过聚合连接mongoDB中的两个表并需要根据匹配获取结果[重复]【英文标题】:How to join two tables in mongoDB with aggregation and need to get result based on match [duplicate] 【发布时间】:2019-05-16 09:23:45 【问题描述】:

我想在 mongoDB 中加入两个表。我有 表 1) 位置

   "_id" : ObjectId("5c0f5d16e32f1fe49e648ac8"),
    "device_time" : "2018-11-30 10:48:44",
    "l_created_date" : "2018-11-30 10:49:18",
    "ignition_status" : "1",
    "longitude" : "80.175472",
    "no_of_satellites" : 9,
    "latitude" : "12.938165",
    "speed" : "12",
    "box_status" : "0"

table-2) 纬度

    "_id" : ObjectId("5c11083daeb33b4d1175fbd2"),
    "full_address" : "CH023 , Guindy Nagar , 6th St , Sriram Nagar , Ramapuram ,  Mumbai , MHA , 560254 , India",
    "latitude" : "14.0275279",
    "longitude" : "81.1821585",
    "__v" : 0

我想根据纬度加入两个表,以便聚合后我可以得到左表记录以及匹配条件。

有人可以帮我解决这个问题吗?

【问题讨论】:

【参考方案1】:

$lookup 聚合管道用于加入两个 Mongo 集合。使用 $lookup 您可以获得所需的结果。检查此查询一次:

db.location.aggregate([
  
    $lookup: 
      from: "latlong",
      localField: "latitude",
      foreignField: "latitude",
      as: "latitude_data"
    
  
])

此外,您可以通过添加 $project 阶段继续填写必填字段。

【讨论】:

感谢您的快速回复。我正在寻找匹配和查找。我做了同样的事情,但我得到了正确的表格匹配数据。但是我也想要基于相同条件的左表数据。 你能发布你想要的确切收集数据吗?

以上是关于如何通过聚合连接mongoDB中的两个表并需要根据匹配获取结果[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用聚合从 mongodb 中的两个集合中查询?

MySQL:加入表并根据另一列上的聚合函数从一行返回一列[重复]

如何使用 MongoDB 聚合管道从集合中的两个子文档中返回最小值?

mongodb - 没有本地的聚合查找

如何连接两个表并显示源?

聚合函数在页面刷新时复制 ng-repeat 中的项目。需要弄清楚如何停止重复。 Angularjs Mongodb mongoose