Несколько $ и $ или в MongoDb найти - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть запрос, который я не могу понять.Этот запрос ничего не возвращает:

 const read = await db.collection("action_traces")
    .find(
      { $and: [
        { $or:
          [
            {"receipt.receiver": "newdexpocket"},
            {"act.account": "newdexpocket"}
          ]
        },
        { $and:
          [
            {"block_time":{ "$gte": "2018-10-02T00:00:00.000Z" } },
            {"block_time":{ "$lt": "2018-10-03T00:00:00.000Z" } }
          ]
        }
      ]
    })

В то время как следующий запрос возвращает часть желаемых результатов:

 const read = await db.collection("action_traces")
    .find(
    { $and: [
      { $or:
        [
          {"receipt.receiver": "newdexpocket"},
          {"act.account": "newdexpocket"}
        ]
      },
      {"block_time":{ "$lt": 2018-10-03T00:00:00.000Z } }
    ]
  })

Проблема проста: как избавиться от документов, которые старшечем 2018-10-02T00:00:00.000Z?Что я делаю не так в своем первом запросе?

Заранее большое спасибо,

1 Ответ

0 голосов
/ 05 декабря 2018

Следует подразумевать and между критериями, приведенный ниже запрос должен быть эквивалентен тому, что вы пытаетесь достичь (если я правильно понял).Пожалуйста, проверьте это.

db.collection("action_traces")
.find({ $or:[
        {"receipt.receiver": "newdexpocket"},
        {"act.account": "newdexpocket"}
      ],
     "block_time":{ "$gte": "2018-10-02T00:00:00.000Z" ,"$lt": "2018-10-03T00:00:00.000Z" } 
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...