397 Stimmen

Wie wählt man ein einzelnes Feld für alle Dokumente in einer MongoDB-Sammlung aus?

In meinem MongoDB habe ich eine Schülerkollektion mit 10 Datensätzen, die die Felder name und roll haben. Ein Datensatz dieser Kollektion ist:

{
    "_id" : ObjectId("53d9feff55d6b4dd1171dd9e"),
    "name" : "Swati",
    "roll" : "80",
}

Ich möchte das Feld roll nur für alle 10 Datensätze in der Kollektion abrufen, so wie wir es in einer herkömmlichen Datenbank tun würden, indem wir verwenden:

SELECT roll FROM student

Ich habe viele Blogs durchgesehen, aber alle führen zu einer Abfrage, die eine WHERE-Klausel haben muss, zum Beispiel:

db.students.find({ "roll": { $gt: 70 })

Die Abfrage ist äquivalent zu:

SELECT * FROM student WHERE roll > 70

Meine Anforderung ist es, einen einzigen Schlüssel ohne Bedingung zu finden. Also, wie lautet die Abfrageoperation dafür.

0voto

AshishTheThinker Punkte 547

Nicht sicher, ob dies die Frage beantwortet, aber ich glaube, es ist erwähnenswert hier. Es gibt noch eine Möglichkeit, ein einzelnes Feld (und nicht mehrere) auszuwählen, indem db.collection_name.distinct(); verwendet wird.

z.B., db.student.distinct('roll',{});

Oder, 2. Möglichkeit: Verwenden von db.collection_name.find().forEach(); (mehrere Felder können hier durch Konkatenation ausgewählt werden)

z.B., db.collection_name.find().forEach(function(c1){print(c1.roll);});

0voto

Neo Murphy Punkte 67

_id = "123321"; _user = await likes.find({liker_id: _id},{liked_id:"$liked_id"}); ; Angenommen, im Dokument gibt es die Felder liker_id und liked_id, also wird durch die Angabe von "$liked_id" nur _id und liked_id zurückgegeben.

0voto

Rito Punkte 2706
db.student.find({}, {"roll":1, "_id":0})

Dies entspricht -

Wähle roll aus student

db.student.find({}, {"roll":1, "name":1, "_id":0})

Dies entspricht -

Wähle roll, name aus student

0voto

shikha singh Punkte 27

Für einzelnes Update : db.collection_name.update({ field_name_1: ("Wert")}, { $set: { field_name_2 : "neuer_wert" }});

Für MultiUpdate : db.collection_name.updateMany({ field_name_1: ("Wert")}, { $set: {field_name_2 : "neuer_wert" }});

Stellen Sie sicher, dass die Indizes korrekt sind.

0voto

Amir_K Punkte 41

Ich glaube, dass dies alle Studentendaten nur mit ihren Matrikelnummern zurückgibt

{
    "_id" : ObjectId("53d9feff55d6b4dd1171dd9e"),
    "name" : "Swati",
    "roll" : "80",
}

db.students.find({}, {roll: 1, _id: 0, name: 0})

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X