2016-11-13 67 views
0

我使用nodejs和mongoose。我有这样的模式:在文档中查找数组并按年份和月份筛选

var comptesSchema = new Schema ({ 
name: String, 
solde: Number, 
user_id: Number, 
operations: [{ 
    name: String, 
    amount: Number, 
    debit: Boolean, 
    mensuel: Boolean, 
    date: Date, 
    category: String 
}] 

});

和我DATAS:

[{ 
"_id": "5826d10b829c732cacd92f6f", 
"name": "compte courant", 
"__v": 0, 
"solde": -40, 
"operations": [ 
    { 
    "date": "2016-11-12T23:00:00.000Z", 
    "debit": false, 
    "amount": 10, 
    "name": "tivoli", 
    "_id": "5828b1bf42ae876e287525dc" 
    }, 
    { 
    "date": "2016-11-12T23:00:00.000Z", 
    "debit": false, 
    "amount": 20, 
    "name": "st georges", 
    "_id": "5828d1e1c951b07888e79c61" 
    }, 
    { 
    "date": "2016-11-11T23:00:00.000Z", 
    "debit": false, 
    "amount": 10, 
    "name": "oiufdsouifd", 
    "_id": "5828d51e679a4a7718a55b48" 
    } 
]}] 

我想找到年份和月份的操作数组中的元素,和过滤。

你有什么想法吗?谢谢:)

回答

0

假设,你设置过滤器选项monthyear如下:

var month = 11; 
var year = 2016; 

试试这个:

comptesSchema.find({'operations.date': { 
    "$gte": new Date(year, month, 1), 
    "$lt": new Date(year, month, 0) 
    }, function (err, comptes) { 
    // Get you filtered comptes 
}); 
+0

它不起作用:(看我的答案 –

0

我有2个操作:一个在十一月和一个在十二月。

我试试这个:

.get('/compte/:compteId/operation/date', function(req, res) { 
    var compteId = req.params.compteId; 
    var month = 11; 
    var year = 2016; 
    Comptes.find({ 
     'operations.date': { 
      "$gte": new Date(year, month, 1), 
      "$lt": new Date(year, month, 0) 
     } 
    }, function(err, compte) { 
     res.json(compte); 
    }); 
}) 

但它不工作,我有这个:

[{ 
"_id": "5826d10b829c732cacd92f6f", 
"name": "compte courant", 
"__v": 0, 
"solde": -70, 
"operations": [ 
    { 
    "date": "2016-11-13T23:00:00.000Z", 
    "debit": false, 
    "amount": 10, 
    "name": "test", 
    "_id": "58297e475c208d081c810aec" 
    }, 
    { 
    "date": "2016-12-13T23:00:00.000Z", 
    "debit": false, 
    "amount": 20, 
    "name": "fsdf", 
    "_id": "58297e655c208d081c810aed" 
    } 
]}] 

它的返回日期在十一月和十二月..我不明白:(