簡體   English   中英

MongoDB,節點:使用未在查找操作中直接構建的查詢查詢 ISODate 字段

[英]MongoDB, Node: Query ISODate fields with a query not build directly in find operation

我正在使用帶有官方mongodb 驅動程序的 nodejs。

我有一個日期屬性存儲為 ISODate 類型的文檔。

查詢是預先構建的,並存儲為字符串 ex。 '{createdAt: {$gte: "FROM_DATE", $lte: "TO_DATE"}}'並與fromDatetoDate的變量一起傳遞到服務器。

在那里使用json5解析查詢,並且"FROM_DATE"new Date(fromDate)替換,另一個相同。

問題是new Date(fromDate)始終存儲為字符串,我最終得到以下查詢:

{createdAt: {
  $gte: 'Tue Mar 10 2020 22:23:51 GMT+0100 (Central European Standard Time)',
  $lte: 'Thu Apr 09 2020 22:23:51 GMT+0200 (Central European Summer Time)'
}}

作為字符串,它不會查詢 ISODate 格式。

僅僅是因為我要替換字符串,默認情況下它會以字符串形式返回,還是問題出在哪里? 謝謝。

創建日期時可以使用toISOString function,如下圖

const date = new Date('01-JAN-2020');
console.log(date)
//Wed Jan 01 2020 00:00:00 GMT-0600 (Central Standard Time)

const newDate = new Date('01-JAN-2020').toISOString();
console.log(newDate)
//2020-01-01T06:00:00.000Z

我解決了這個問題。 function .replace()總是用字符串結果替換字符串。

如果有人有同樣的問題,我在這里找到了避免.replace()的解決方案 - https://stackoverflow.com/a/40436561/4693613

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM