2016-11-13 11 views
0

Ich arbeite mit Nodejs und Mungo. Ich habe ein Schema wie folgt:finden Array in Dokument und Filter nach Jahren und Monaten

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

});

und meine Daten:

[{ 
"_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" 
    } 
]}] 

Ich möchte die Elemente in der Operationsmatrix finden und Filter nach Jahr und Monat.

Haben Sie eine Idee? Thanks :)

Antwort

0

Nehmen wir an, stellen Sie Ihre Filteroptionen für month und year wie folgt:

var month = 11; 
var year = 2016; 

Versuchen Sie folgendes:

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

es funktioniert nicht :(schaue meine Antwort –

0

ich habe 2 Betrieb: eine im November und eine in Dezember.

Ich versuche dies:

.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); 
    }); 
}) 

Aber seine nicht funktioniert, ich habe dies:

[{ 
"_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" 
    } 
]}] 

es ist senden Sie das Datum im November und Dezember .. Ich verstehe nicht :(

Verwandte Themen