如果元素A的时间小于同一文档中元素B的时间,则Mongodb提取文档

时间:2016-12-19 16:44:52

标签: mongodb

我有这个集合

 db.Tratte.insert(
    {
    "TransportID":["9901","9903"],
    "StopsBy":[
     {"Station":"Roma Termini",
     "StopsAt":ISODate("2016-01-01T09:05:00Z"),
     "LeavesAt":ISODate("2016-01-01T09:25:00Z")},
      {"Station":"Napoli Centrale",
     "StopsAt":ISODate("2016-01-01T10:37:00Z"),
     "LeavesAt":ISODate("2016-01-01T10:52:00Z")},
     {"Station":"Salerno",
     "StopsAt":ISODate("2016-01-01T11:35:00Z")}]
    })

 db.Tratte.insert(
        {
        "TransportID":"9999",
        "StopsBy":[
         {"Station":"Salerno",
         "StopsAt":ISODate("2016-01-01T09:05:00Z"),
         "LeavesAt":ISODate("2016-01-01T09:25:00Z")},
          {"Station":"Napoli Centrale",
         "StopsAt":ISODate("2016-01-01T10:37:00Z"),
         "LeavesAt":ISODate("2016-01-01T10:52:00Z")},
         {"Station":"Roma Termini",
         "StopsAt":ISODate("2016-01-01T11:35:00Z")}]
        })

并且在输入的两个站点中给出,我只想要那些站点A的时间小于站点B的时间的文件。例如,如果我选择作为站点A Roma Termini和作为站点B Salerno,系统必须返回上面的第一个文件(因为时间(罗马)时间(萨勒诺))

我认为这样做的唯一方法是提取包含两个站点的所有文档,检索它们的时间以及它们是否符合我的标准返回文档。但这个解决方案太神器了。是否有一个查询来执行此操作?

我的最终目标是: 我需要一种方法来获得,例如,罗马 - >萨勒诺文件但不是萨勒诺 - >当用户搜索两个电台时,罗马文件。问题是我得到了两个方向,但我只想要正确的方向。 感谢

2 个答案:

答案 0 :(得分:0)

MongoDb不是为这种查询而设计的,可能值得查看关系数据库来存储关系数据。

然而,您可以根据给定的用途对文档进行重新建模?

答案 1 :(得分:0)

查看the $gt operator,它匹配所有具有大于某个值的特殊字段的文档。在query文档时使用它。