Как использовать оператор запроса сравнения mongoDB для проверки значений между датами созданного периода? - PullRequest
0 голосов
/ 04 октября 2018

Я хотел бы просмотреть всех созданных пользователей Meteor.users.find().fetch(), которые были созданы в базе данных в период с начала 1 сентября и до конца 30 сентября.Как мне добиться этого в коде.

Найти встроенную мою неудачную попытку:

var beginningOfMonth = new Date();
beginningOfMonth.setMonth(8, 1); 
console.log("beginning Of the Month: "+beginningOfMonth); 

Код выше приводит к:

beginning Of the Month: Sat Sep 01 2018 21:44:00 GMT+0300 (East Africa Time)

...

var endOfMonth = new Date(); 
endOfMonth.setMonth(8, 30);     
console.log("end Of the Month: "+endOfMonth);

Код вышедоходность:

end Of the Month: Sun Sep 30 2018 21:44:00 GMT+0300 (East Africa Time)

... пока что идеально, однако в приведенном ниже запросе:

Meteor.users.find({ createdAt: { $gte: currentDate }}, { createdAt: { lte: endMonth }},  { "services.google.email": { $exists: true } } ).fetch();

Приведенный выше запрос приводит к приведенному ниже.Обратите внимание, что даты createAt лежат вне того, что запрашивает запрос.

[{…}]
 0:
  createdAt: Thu Oct 04 2018 14:54:33 GMT+0300 (East Africa Time) 
  profile: {name: "Sir ProgrammerAllot"}
  services: {google: {…}, resume: {…}}
  _id: "2trR7WxnqKJuuipG8"
  __proto__: Object
 length: 1
  __proto__: Array(0)

Как изменить запрос, чтобы показывать только пользователей, созданных в базе данных с 1 сентября по последний день сентября?

Ожидаем вашего ответа.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Помещение « условий запроса в один объект », как предложено @JohnnyHK, и обертывание каждого оператора запроса (критерия) помогли в работе всего запроса.

Найдите ниже рабочего раствора:

Meteor.users.find(
       {createdAt: { $gte: beginningOfMonth, $lte: endOfMonth }}, 
       {"services.google.email": { $exists: true }}
).count();
0 голосов
/ 04 октября 2018

Вам нужно поместить все условия запроса в один объект (и использовать $lte вместо lte):

Meteor.users.find({
    createdAt: { $gte: currentDate, $lte: endMonth },
    "services.google.email": { $exists: true }
}).fetch();
...