Пн go Фильтр запросов Вложен с множеством и - PullRequest
1 голос
/ 05 февраля 2020

Ниже приведен мой запрос, который точно соответствует моему документу, но все еще не получает вывод. Не знаю почему. Ниже приводится также документ.

db.getCollection("analytics").find(
    { 
        "$and" : [
            { 
                "archive" : false
            }, 
            { 
                "platform" : "WEB"
            }, 
            { 
                "vendorId" : "3c7adbfe-14d7-4b26-9134-7e05d56573cc"
            }, 
            { 
                "createdAt" : { 
                    "$gte" : 1578268800000.0
                }
            }, 
            { 
                "createdAt" : { 
                    "$lte" : 1580860800000.0
                }
            }, 
            { 
                "$and" : [
                    { 
                        "data.mobile" : "123"
                    }, 
                    { 
                        "page" : "Loan Application"
                    }, 
                    { 
                        "event" : "click"
                    }
                ]
            }, 
            { 
                "$and" : [
                    { 
                        "data.aadharNumber" : "123"
                    }, 
                    { 
                        "page" : "Personal Information"
                    }, 
                    { 
                        "event" : "click"
                    }
                ]
            }, 
            { 
                "$and" : [
                    { 
                        "data.totalExp" : "5"
                    }, 
                    { 
                        "page" : "Professional Information"
                    }, 
                    { 
                        "event" : "click"
                    }
                ]
            }
        ]
    }
);

Документы:

[
  {
    "page": "Loan Application",
    "event": "click",
    "loggedIn": true,
    "vendorId": "3c7adbfe-14d7-4b26-9134-7e05d56573cc",
    "data": {
      "first": "Praveen",
      "mobile": "1234"
    },
    "platform": "WEB"
  },
  {
    "page": "Personal Information",
    "event": "click",
    "loggedIn": true,
    "vendorId": "3c7adbfe-14d7-4b26-9134-7e05d56573cc",
    "data": {
      "panNumber": "123",
      "aadharNumber": "123"
    },
    "platform": "WEB"
  },
  {
    "page": "Professional Information",
    "event": "click",
    "loggedIn": true,
    "vendorId": "3c7adbfe-14d7-4b26-9134-7e05d56573cc",
    "data": {
      "totalExp": "5"
    },
    "platform": "WEB"
  }
]

1 Ответ

1 голос
/ 05 февраля 2020

С вашим запросом связано много проблем, вы можете попробовать выполнить запрос ниже, чтобы вернуть все документы:

db.getCollection("analytics").find({
  $expr: {
    $and: [
      {
        $eq: [
          "$platform",
          "WEB"
        ]
      },
      {
        $eq: [
          "$vendorId",
          "3c7adbfe-14d7-4b26-9134-7e05d56573cc"
        ]
      },
      {
        $or: [
          {
            "$and": [
              {
                "data": {
                  "mobile": "123"
                }
              },
              {
                "page": "Loan Application"
              },
              {
                "event": "click"
              }
            ]
          },
          {
            "$and": [
              {
                "data": {
                  "aadharNumber": "123"
                }
              },
              {
                "page": "Personal Information"
              },
              {
                "event": "click"
              }
            ]
          },
          {
            "$and": [
              {
                "data": {
                  "totalExp": "5"
                }
              },
              {
                "page": "Professional Information"
              },
              {
                "event": "click"
              }
            ]
          }
        ]
      }
    ]
  }
})

Тест: MongoDB-Playground

...