Json 基于子集合的MongoDB查找

Json 基于子集合的MongoDB查找,json,mongodb,mongodb-query,bson,Json,Mongodb,Mongodb Query,Bson,我的数据结构如下: 基本上,它包含来自谷歌距离矩阵的路径点信息。我需要找到从C点开始到E点结束的路线。如果我使用$and运算符并查询 db.Routes.find( { $and : [ {routes.legs.start_address:"C"}, {routes.legs.end_address:"E"} ] } 我仍然得到这两个结果。我有什么可能的方法来解决这个问题。我第一次尝试Mongo,非常感谢您的帮助和指导 [ { "

我的数据结构如下:

基本上,它包含来自谷歌距离矩阵的路径点信息。我需要找到从C点开始到E点结束的路线。如果我使用$and运算符并查询

db.Routes.find( {
    $and : [
        {routes.legs.start_address:"C"},
        {routes.legs.end_address:"E"}
    ]
} 
我仍然得到这两个结果。我有什么可能的方法来解决这个问题。我第一次尝试Mongo,非常感谢您的帮助和指导

[
  {
    "_id": {
      "$oid": "596e004151cc92046c28dd39"
    },
    "routes": [
      {
        "legs": [
          {
            "end_address": "B",
            "start_address": "A"
          },
          {
            "end_address": "C",
            "start_address": "B"
          },
          {
            "end_address": "D",
            "start_address": "C"
          },
          {
            "end_address": "E",
            "start_address": "D"
          }
        ]
      }
    ],
    "status": "OK",
    "Date": {
      "$date": "2017-07-18T12:34:07.781Z"
    }
  },
  {
    "_id": {
      "$oid": "596e007d51cc9231a8117607"
    },
    "routes": [
      {
        "legs": [
          {
            "end_address": "E",
            "start_address": "F"
          },
          {
            "end_address": "D",
            "start_address": "E"
          },
          {
            "end_address": "C",
            "start_address": "D"
          },
          {
            "end_address": "B",
            "start_address": "C"
          }
        ]
      }
    ],
    "status": "OK",
    "Date": {
      "$date": "2017-07-18T12:35:09.121Z"
    }
  }
]

您期望的输出是什么如果您正在寻找一个计算路径并过滤结果的查询,那么您对数据库的期望过高。您可以做的最好的事情是获取开始地址和结束地址匹配的文档子集,然后在应用程序级别对其进行分析。预期结果是仅返回第一项。@AlexBlex Nope我正在尝试查看是否可以根据条件和子集合的顺序进行查询以找出结果。与路径无关您必须在程序中处理该逻辑。在MongoDB查询中不能有这种级别的逻辑