我有一个获取路由器,该路由器可以获取带有时间戳的订单
router.get('/api/order/:date/:time', function (req,res,next) {
Box.find({orders: {date:req.params.date}}.then (function (order){
console.log('GET ORDER / with ', req.params.date);
res.send(order);
}).catch(next);
});
:time
只是为了让我的前端调用此特定的get,它在:date
参数内提供时间戳记
现在是模型
const orderSchema = new Schema({
name : { type : String },
date : { type : String }, // date stamp of only YYYY/MM/DD
orders : { type : Array}
});
在这一系列订单中,您可以找到以下元素:
"orders" : [
{
"type" : "Meat Lover Slice",
"extraType" : "na",
"extraInfo" : "na",
"date" : "2018-09-27:08:47:07",
"quantity" : "1",
"size" : "medium",
"crust" : "normal",
"split" : false,
以此类推..(大约15个元素)
您可以在这一系列订单中看到带有YYYY/MM/DD:HH:MM:SS
的时间戳(2018-09-27:08:47:07)。
我在路由器内
console.log('GET ORDER / with ', req.params.date) // > GET ORDER / with 2018-09-27:08:47:07
所以它确实收到了这条路线的时间。
但是有了参数,我该如何过滤出与该元素匹配的特定顺序?
答案 0 :(得分:0)
如果我正确地理解了问题,那么简短的答案是您不能这样做,那么就没有办法在标准查询中“过滤”子文档。 (请查看Return only matched sub-document elements within a nested array,以获得更深入的答案。)
您可以做的是使用MongoDB聚合(https://docs.mongodb.com/manual/aggregation/)或在收到查询结果后自行进行过滤。 我建议您自己进行过滤。