![](/img/trans.png)
[英]How do you do a “join” on an array in mongoose (mongodb) with node.js?
[英]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.