вся ваша структура запросов не является правильным на самом деле. Операторы действуют в «полях» в форме аргумента. Таким образом, оператор является «значением» поля как «ключ» в манере речи.
Помимо этого все запросы «MongoDB» на самом деле являются неявным «запросом». Сам оператор $and
требуется только там, где вы указываете несколько условий для одного и того же поля. Но это не так, как вы делаете «диапазон запроса» с $gte
и $lt
операторов, а вы «объединить» их в том же «оператора документа»:
db.collection.find({
"phone": phone,
"date": { "$gte": "2014-08-25", "$lte": "2014-08-30" }
})
Также стоит отметить здесь, что это работает только, когда ваш даты на самом деле являются «строками». То, что вы на самом деле «должны» иметь это «дата объекты» в вашей коллекции, которые обычно представляют в оболочке, как так:
ISODate("2014-08-29T17:51:30.428Z")
Это поможет вам значительно, как вы можете делать другие вещи, с датами и так же не нужны «конвертировать» их для любых других манипуляций в вашем коде. Если у вас есть реальные «объекты даты», то вы запрашиваете их просто с помощью других экземпляров даты объекта следующим образом:
db.collection.find({
"phone": phone,
"date": { "$gte": new Date("2014-08-25"), "$lte": new Date("2014-08-30") }
})
точно, я думаю, что все больше людей должны понимать, что MongoDB запросы не JSON, но BSON: HTTP://docs.mongodb.org/manual/reference/bson-types/ – fstab