您好,我正在尝试从mongodb获取D-7天的文档
示例:如果今天是“星期三”,那么我只想获取上一个“星期三”的文档
我得到的日期从前端,
日期格式在mongob:2020-01-15T09:02:48.375 00:00
日期格式从邮递员:"2020-01-15"我在nodejs转换成dateObject.喜欢这个: 2020-01-15T00:00:00.000Z
nodejs查询
const { previousDay,vendorId } = req.body;
console.log(previousDay);
let date = new Date(previousDay);
console.log(date);
const vendorOrder = await Order.find(
{orderCreatedBy: vendorId,orderCreatedOn: date});
return res.status(200).json({
vendorOrder
});
} catch (error) {
res.send(error);
}
};
邮递员。身体
{ "previousDay":"2020-01-15"}
POSTMAN响应返回空数组
[]
Mongodb系列
_id:5e26be38c13b7149d0a95111
isApproved:false
vendorOrder:[]
frequency:"WE"
orderCreatedBy:5e25550a3405363bc4bf86c1
submittedTo:5e2555363405363bc4bf86c2
dealerOrder:[]
orderCreatedOn:2020-01-15T09:02:48.375+00:00
__v:0
MongoDB模式:
orderCreatedOn: {
type: Date,
default: new Date().toISOString().split("T")[0] + "T18:30:00.000Z"
},
Nodejs控制器:参考@Pushprajsinh Chudasama答案
现在匹配日期存在问题,因为mongodb将匹配包括时间戳在内的完整日期,所以在保存文档时,将恒定时间戳与日期一起设置让我们用这个例子来理解
保存文档时,此时将orderCreatedOn
的值设置为下面的snippet,Edited
exports.createOrder = async (req, res, next) => {
req.body['orderCreatedOn'] = new Date().toISOString().split("T")[0] + "T18:30:00.000Z";
const order = new Order({ ...req.body, });
try {
await order.save();
res.status(201).json({ message: "Order created successfully!", order: order, orderId: order._id });
}
catch (e) {
res.send(e);
}
};
因此,数据库中的日期将被存储为,2020-01-15T18:30:00.000Z
因此,现在当您找到7天前的日期时,请将下面的代码片段添加到find controller中。
var someDate = new Date();
var numberOfDaysToSubtract = -7; //this refers to date of seven days before
someDate.setDate(someDate.getDate() + numberOfDaysToSubtract);
console.log("Date of seven days before ===>" , someDate);
var date = someDate.toISOString().split("T")[0] + "T18:30:00.000Z";
date = new Date(date);
//And the rest code is same.
console.log(" =======+++> ", new Date(date));
希望你找到解决办法了。
问题内容: 我想对MongoDB驱动程序作出承诺。我写了以下代码: 您是否知道为什么在调用该方法时为什么没有输出: 问题答案: 手动散布API是很危险的,我建议采取以下措施: 有了Bluebird的承诺,它看起来就像:
我总是读到MongoDB驱动程序(>2.0)for NodeJS支持承诺。但我找到的仅有的例子是connect()和findOne()函数。虽然它适用于这些,而且我可以得到承诺,但对于aggregate()和find()它不适用。我明白这是因为它们可能会返回游标,但是既然有承诺支持,那些承诺在哪里呢?一定有办法和他们合作。欢迎提供链接、示例或简单解释:) 谢谢你,乔迪。
我必须在mongob上执行查询,我想只选择一个具有特定_id的文档(类型为ObjectId)。 我使用“严格模式”sintax,特别是运算符$oid用于将_id与字符串进行比较。 但是它不起作用!,我现在不知道它是一个错误(一袋mongo-c-drive/mongo-delphi-drive)还是我在ObjectId字段上编写了错误的查询代码。 在一个简单的代码片段下面,存在具有_id的文档,但b
我正在尝试使用MongoDBJava驱动程序作为聚合命令的一部分创建查询。目前我允许日期范围或特定日期数组作为参数。例如 日期范围查询工作正常,我解析xml并将其转换为在mongo中生成以下查询的DBObject; 对于指定日期,我只想返回在给定日期的00:00:00.000和第二天的00:00:00.000之间发生的结果。根据我对mongo查询的基本了解,我希望做一个类似于日期范围的$匹配,但是
问题内容: 我正在尝试使用Selenium Web驱动程序获取文本,这是我的代码。请注意,我不想使用Xpath,因为在我的情况下,每次重新启动网页时id都会更改,请提供帮助。 我的代码: HTML: 问题答案: 你只想。 然后,您可以在得到验证 后对其 进行验证,不要尝试传递您 期望的 内容。
UTCDateTime的var_dump显示有效值: 对象(MongoDB\bson\utcdatetime)#477(1){[“毫秒”]=> 字符串(10)“1515954053”} 预期返回的文档示例: UPDATE:删除发送到UTCDateTime对象的变量,如下所示: 作品(如上面所示,我在将来添加了一个记录)。问题是当我发送变量来指定我需要的时间戳时。