簡體   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