firebase 按时间戳月查询火库数据

ki0zmccv  于 2022-12-14  发布在  其他
关注(0)|答案(4)|浏览(97)

所以我有我的记录在firebase云firestore像这样:

[  
   {  
      "category":"drinks",
      "expensetype":"card",
      "id":"5c673c4d-0a7f-9bb4-75e6-e71c47aa8d1d",
      "name":"JJ",
      "note":"YY",
      "price":57,
      "timestamp":"2017-11-30T22:44:43+05:30"
   },
   {  
      "category":"drinks",
      "expensetype":"card",
      "id":"85731878-eaed-2740-6802-e35e7758270b",
      "name":"VV",
      "note":"TTT",
      "price":40,
      "timestamp":"2017-12-30T22:41:13+05:30"
   }
]

我想查询带有时间戳的数据,并获取属于特定月份或日期的数据。
例如,如果我点击日历中的某个特定月份(比如说三月),我只想在结果中显示该特定月份的数据。我该怎么做呢?
我已使用firebase.firestore.FieldValue.serverTimestamp()保存日期
提前感谢您的帮助。
编辑:
这就是我如何形成我的查询

var spendsRef = this.db.collection('spend', ref => ref.where("timestamp", ">", "12-12-2017"));

this.items = spendsRef.valueChanges();

但它仍然返回数据库中的所有数据
答:

var todayDate = new Date("Tue Jan 02 2018 00:00:00 GMT+0530 (IST)") // Any date in string
var spendsRef = this.db.collection('spend', ref => ref.where("timestamp", ">", todayDate));
this.items = spendsRef.valueChanges();
lyfkaqu1

lyfkaqu11#

使用两个相对运算符,可以确定查询返回的文档的精确范围:

ref.where("timestamp", ">=", "2017-11").where("timestamp", "<", "2017-12")
eh57zj3b

eh57zj3b2#

这是机器人的方式
Query query = mFirestore.collection("rootcollection").whereEqualTo("month", 3);
可以进一步按时间戳对结果进行排序

Query query = mFirestore.collection("rootcollection")
    .orderBy("timestamp", Query.Direction.DESCENDING)
    .whereEqualTo("month", 3);
s2j5cfk0

s2j5cfk03#

我正在使用node.js并将一个参数存储为new Date(new Date().toUTCString())
现在,我获取相同的数据,对其进行一些处理,并在where查询中使用参数new Date(<param received in fetch>),以在许多记录中获取相同的记录。
谢谢你@Syed Sehu Mujammil A,你的回答奏效了。

0vvn1miw

0vvn1miw4#

我解决了一个类似的问题:

var now = new Date(new Date().toUTCString());
 const db = collection(fireStore, 'jobs_col');
 return await getDocs(query(db, where('expire_date', '>=', now)));

相关问题