это мой запрос mongoshell:
db.orders.aggregate([
{
'$match': {
"orderCreatedBy": ObjectId("5e2555363405363bc4bf86c2"),
"submittedTo": ObjectId("5e25550a3405363bc4bf86c1"),
'$or': [
{'orderCreatedOn': ISODate("2020-02-01T18:30:00Z")},
{'orderCreatedOn': ISODate("2020-01-25T18:30:00Z")}
]}}]).pretty()
, который работает, как и ожидалось, в mongoshell, теперь вот мой nodejs код:
const Order = require("../model/order");
const mongoose = require('mongoose')
exports.dashboard = async (req, res, next) => {
const { submittedTo, orderCreatedBy } = req.body;
let lastWeekDate = new Date();
let numberOfDaysToSubtract = -6;
lastWeekDate.setDate(lastWeekDate.getDate() + numberOfDaysToSubtract);
let date = lastWeekDate.toISOString().split("T")[0] + "T18:30:00.000Z";
date = new Date(date);
console.log(date) // 2020-01-25T18:30:00.000Z
let tomorrowDate = new Date();
tomorrowDate = tomorrowDate.setDate(tomorrowDate.getDate() + 1);
tomorrowDate = new Date(tomorrowDate);
tomorrowDate = tomorrowDate.toISOString().split("T")[0] + "T18:30:00.000Z";
tomorrowDate = new Date(tomorrowDate);
console.log(tomorrowDate) // 2020-02-01T18:30:00.000Z
try {
const order = await Order.aggregate([
{
"$match": {
orderCreatedBy: mongoose.Types.ObjectId(orderCreatedBy),
submittedTo: mongoose.Types.ObjectId(submittedTo),
"$or": [
{ "orderCreatedOn": date },
{ "orderCreatedOn": tomorrowDate }
]
}
}])
return res.status(200).json({
order
});
} catch (error) {
res.send(error);
}
};
POSTMAN BODY: {"orderCreatedBy":"5e25550a3405363bc4bf86c1","submittedTo":"5e2555363405363bc4bf86c2"}
ОТВЕТ POSTMAN: {"order": []}
пожалуйста, посмотрите, почему это не работает в драйвере nodejs, а в оболочке только здесь образец документа из коллекции заказов
"_id" : ObjectId("5e27f736a42d441fe8a8957d"),
"isApproved" : false,
"vendorOrder" : [
{
"_id" : ObjectId("5e26be38c13b7149d0a95113"),
"publicationCode" : "TOI",
"publicationName" : "Times of India",
"editionName" : "chennai city",
"productCode" : "TCE1",
"subscriptionCopies" : 70,
"tradeCopies" : 40
},
{
"_id" : ObjectId("5e26be38c13b7149d0a95112"),
"publicationCode" : "ET",
"publicationName" : "Economic Times",
"editionName" : "chennai city",
"productCode" : "ECE1",
"subscriptionCopies" : 20,
"tradeCopies" : 100
}
],
"frequency" : "TH",
"orderCreatedBy" : ObjectId("5e2555363405363bc4bf86c2"),
"submittedTo" : ObjectId("5e25550a3405363bc4bf86c1"),
"orderCreatedOn" : ISODate("2020-02-01T18:30:00Z"),
Есть несколько документов один документ также с "orderCreatedOn": ISODate ("2020-02-25T18: 30: 00Z") последней недели Мне нужно показать оба документа, я прокомментировал условие $or
, затем получил ответ, но в тот момент, когда я раскомментировал $ или снова поставил условие пустым []