我有一个托管的CouchDB,它有一个日期(字符串?)字段,其值类似于" 03-Mar-2007"。我有一个角度应用程序,它使用一个数据包来从远程提取数据并做一些事情。
我需要查找日期值小于当前日期的记录。
我使用下面的代码,但它不起作用。
db.createIndex({
index: {
//fields: ['Pincode', 'subscriberid']
fields: ['Pincode', 'IssueDtto']
}
})....
我使用' find'搜索记录:
var cdate = getFormattedDate($scope.curdate);
function getFormattedDate(date) {
var year = date.getFullYear();
var month = (1 + date.getMonth()).toString();
month = month.length > 1 ? month : '0' + month;
var day = date.getDate().toString();
day = day.length > 1 ? day : '0' + day;
return day + '-' + monthNames[date.getMonth()] + '-' + year;
}
db.find({
selector: {
Pincode: { $eq: pin }
,IssueDtto: { $lt: cdate }
}
然而,这似乎不起作用。我究竟做错了什么?请帮忙。
由于
答案 0 :(得分:2)
您可以将日期转换为可排序格式,例如从date.toISOString()
获得的ISO格式。日期看起来像这样:2007-03-01T00:00:00.000Z
,它可以很好地排序字符串。然后,您还可以使用索引并使用find
。
答案 1 :(得分:0)
我做了一个解决方法,从db.find中删除了'date'字段选择器,只使用了另一个选择器,得到了所有文档和(手动)过滤的行。
angular.forEach(r.docs, function (val) {
var dt = new Date(val.IssueDtto);
if (dt < $scope.curdate)
$scope.todo.push(val);
});