繁体   English   中英

您如何使用Node JS按日期在mongodb中进行匹配?

[英]How do you match by date in mongodb using node js?

我在mongo数据库中有一个像这样的元素的数据集:

{
    "fullname" : "Anonymous User",
    "date" : ISODate("2016-12-09T04:00:27Z")
}

我正在尝试搜索日期全名条款。

在mongo中(在命令行上),如果执行以下命令,则会得到许多返回的元素:

db.collection_name.find({$ and:[{全名:{$ regex:“ ^匿名用户$”,$ options:'i'}},{“ date”:{“ $ lt”:ISODate(“ 2016- 12-19T00:00:00Z“)}}]})。pretty()

当全名匹配并且日期小于给定的日期时。 太好了,所以我知道我的数据库存储了数据,但日期和名称是硬编码的。

我在node.js中编写脚本,并提出了以下建议:

var fullname = "Anonymous User";
var today = new Date();
var search_term = { $and: [ { fullname: { $regex: "^" + fullname + "$", $options: 'i' } }, { date: { $lt: today } } ] };

我试图在我的nodejs脚本中使用mongodb模块和以下代码片段:

db.collection(collection_name).find(search_term).toArray(function(err,results){console.log(results);});

但是,当我运行脚本时,不会返回任何结果。 没有错误消息-只是没有项目匹配,也没有结果。

我究竟做错了什么?

我认为这可能与日期如何存储在变量“ search_term”中有关,但我不知道如何解决。 例如,这有效:

db.collection(collection_name).find({$ and:[{全名:{$ regex:“ ^匿名用户$”,$ options:'i'}},{日期:{$ lt:new Date()}} ]});

这不起作用:

db.collection(collection_name).find(search_term).toArray(function(err,results){console.log(results);});

唯一的区别是我已将find语句替换为“ search_term”。

我想使用后者来避免代码重复。

你需要这样通过

var today = new Date().toISOString()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM