在mongodb节省时间

时间:2014-04-25 16:03:49

标签: javascript node.js mongodb mongodb-query

我试图将特定时间保存到我的mongodb数据库中 使用javascript日期对象,如:

var currenttime = new Date();
currenttime.setHours(14);
currenttime.setMinutes(37);

db.test.insert({time: currenttime});

然而我注意到不仅节省了小时和分钟, 还有约会。我正在寻找一种只节省时间的方法 分钟,但在某种程度上,我仍然可以做的不仅仅是操作 在上面。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:1)

您可以考虑将分钟数保存为整数字段。

例如,8:30将转换为8小时* 60分钟+ 30分钟= 510分钟。将510保存为MongoDB中的数字。

答案 1 :(得分:1)

基本上,您可以尝试以下两种方法来节省时间:

  1. 将时间保存为类型:字符串
const userInput = '05:20';
const hours = userInput.slice(0, 2);
const minutes = userInput.slice(3);
  1. 将日期时间保存为以下类型:日期

但是在第二个选项中,您必须创建Date对象并设置小时和分钟:

const date = new Date(dateString);
date.setHours(hours, minutes);

答案 2 :(得分:0)

MongoDb Date只有64位,另一方面,如果你将时间存储为2 32位整数(小时和分钟),你将使用这64位。如果你将它们保存为4个字母的字符串,那就更多了。

所以你无法获得太空优势。但是你将失去查询数据的优势。使用2个数字格式找到比特定时间更大的所有元素将更难,甚至更难用字符串。

所以我会将它们保存为日期。如果你真的只需要时间 - 并且需要在此时间查询,你可以执行以下操作:使所有日期都相同。例如:

 var a = new Date();   // gives current date and time (note it is UTC datetime)
 a.setYear(2000);
 a.setMonth(0);
 a.setDate(1);
 db.test.insert({time: currenttime});

这样所有元素都具有相同的日期和不同的时间。通过这种方式,您可以正确排序它们。此外,如果您需要查找时间小于特定时间的所有元素,您可以使用年/月/日(2000/0/1)快速创建日期对象并正确查询数据。