2016-11-07 2 views
0

Ich habe alle Benutzerdaten, die in Mongodb eingefügt wird.Wie bekomme ich alle negativen Wert Dokumente für bestimmte Benutzer mit express.js mit mongodb?

[ 
{ 

    "user_id": "1", 
    "name": "aaaa", 
    "value": -10 
    }, { 

    "user_id": "2", 
    "name": "bbbb", 
    "value": 30 

    }, { 
    , 
    "user_id": "1", 
    "name": "aaaa", 
    "value": 310 

    }, { 

    "user_id": "2", 
    "name": "bbbb", 
    "value": -15 
    }, { 

    "user_id": "1", 
    "name": "aaaa", 
    "value": -100 

    }, { 

    "user_id": "3", 
    "name": "cccc", 
    "value": 390 

    }] 

wie suche ich für meine requirment? in meinem Dokument einige Benutzer contaning Wert im negativen. zum Beispiel user_id = 1 mit zwei negativen Wertobjekt Ich muss herausfinden, mit Hilfe von Abfrage Wie kann ich meinen Code ändern?

User.findOne({user_id: '1'},function(err, user) { 
    if (err) return next(err); 
    if (!user) return res.status(401).send('Unauthorized'); 
    res.json(user); 
    }); 
+1

Bitte versuchen Sie es * User.find ({user_id: '1', Wert: {$ lt: 1}}) * –

Antwort

1

Um mehrere Dokumente verwenden find statt findOne zu bekommen. Wenn Sie find verwenden, erhalten Sie die Ausgabe als Array von Objekten. Sie können versuchen, den Code unten

User.find({user_id: '1' ,value : {$lt : 0}},function(err, users) { 
    if (err) return next(err); 
    res.json(users); 
}); 
1

Wenn Sie nur alle Einträge mit negativen Werten finden müssen, nur Wert angeben < 0 als Abfragekriterien:

User.find({value : {$lt : 0}},function(err, users) { 
    if (err) return next(err); 
    if (!users || users.length) { 
    return res.status(401).send('Unauthorized'); 
    } 
    res.json(users); 
}); 
0

Versuchen Sie, diese

Durch die Bezugnahme Ihr Beispielschema, es ist Array von Dokumenten von Benutzer-ID

Verwenden Sie $unwind, um die Dokumente aus Array zu trennen und die Dokumente nach u filtern sing gegeben user_id und dessen Wert ist negativ.

Beispieldokument

{ 
     "_id" : ObjectId("582032556772b7cb0ff85721"), 
     "userArray" : [ 
       { 
         "user_id" : "1", 
         "name" : "aaaa", 
         "value" : -10 
       }, 
       { 
         "user_id" : "2", 
         "name" : "bbbb", 
         "value" : 30 
       }, 
       { 
         "user_id" : "1", 
         "name" : "aaaa", 
         "value" : 310 
       }, 
       { 
         "user_id" : "2", 
         "name" : "bbbb", 
         "value" : -15 
       }, 
       { 
         "user_id" : "1", 
         "name" : "aaaa", 
         "value" : -100 
       }, 
       { 
         "user_id" : "3", 
         "name" : "cccc", 
         "value" : 390 
       } 
     ] 
} 

db.collection.aggregate([{$unwind:"userArray"}]); 

Das Ergebnis der Abwickelvorrichtung auf dem oberen Daten

{ 
     "_id" : ObjectId("582032556772b7cb0ff85721"), 
     "userArray" : { 
       "user_id" : "1", 
       "name" : "aaaa", 
       "value" : -10 
     } 
} 
{ 
     "_id" : ObjectId("582032556772b7cb0ff85721"), 
     "userArray" : { 
       "user_id" : "2", 
       "name" : "bbbb", 
       "value" : 30 
     } 
} 
{ 
     "_id" : ObjectId("582032556772b7cb0ff85721"), 
     "userArray" : { 
       "user_id" : "1", 
       "name" : "aaaa", 
       "value" : 310 
     } 
} 
{ 
     "_id" : ObjectId("582032556772b7cb0ff85721"), 
     "userArray" : { 
       "user_id" : "2", 
       "name" : "bbbb", 
       "value" : -15 
     } 
} 
{ 
     "_id" : ObjectId("582032556772b7cb0ff85721"), 
     "userArray" : { 
       "user_id" : "1", 
       "name" : "aaaa", 
       "value" : -100 
     } 
} 
{ 
     "_id" : ObjectId("582032556772b7cb0ff85721"), 
     "userArray" : { 
       "user_id" : "3", 
       "name" : "cccc", 
       "value" : 390 
     } 
} 

wenden dann die Bedingung sein würde, dass User_id ist und der Wert negativ ist. Hierfür können wir $match zusammen mit $and verwenden (da wir zwei Bedingungen Wert und ID haben)

db.collection.aggregate([{$unwind:"$userArray"}, {$match:{$and: [{"userArray.value":{$lte:0}}, {"userArray.user_id":"1"}]}} ]); 

für user_id: 1 das Abfrageergebnis ist

{ 
     "_id" : ObjectId("582032556772b7cb0ff85721"), 
     "userArray" : { 
       "user_id" : "1", 
       "name" : "aaaa", 
       "value" : -10 
     } 
} 
{ 
     "_id" : ObjectId("582032556772b7cb0ff85721"), 
     "userArray" : { 
       "user_id" : "1", 
       "name" : "aaaa", 
       "value" : -100 
     } 
} 

Mit diesem Ergebnis haben Sie es iterieren in Ihre Serviceebene und arbeiten Sie an den anderen gewünschten Ergebnissen.

Hoffe es hilft!

Verwandte Themen