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.

15voto

Karan Khanna Punkte 1713

Versuchen Sie die folgende Abfrage:

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

Und wenn Sie die Konsole verwenden, können Sie pretty() hinzufügen, um es einfacher zu lesen.

db.student.find({}, {roll: 1, _id: 0}).pretty();

Hoffe, das hilft!!

11voto

Nur zu Bildungszwecken können Sie es auch auf eine der folgenden Arten tun:

1.

    var query = {"roll": {$gt: 70};
    var cursor = db.student.find(query);
    cursor.project({"roll":1, "_id":0});

2.

    var query = {"roll": {$gt: 70};
    var projection = {"roll":1, "_id":0};
    var cursor = db.student.find(query,projection);

`

8voto

Anthony Awuley Punkte 2805
db..find({}, {field1: , field2:  ...})

In Ihrem Beispiel können Sie etwas Ähnliches tun:

db.students.find({}, {"roll":true, "_id":false})

Projektion

Der Projektionsparameter bestimmt, welche Felder in den übereinstimmenden Dokumenten zurückgegeben werden. Der Projektionsparameter nimmt ein Dokument der folgenden Form an:

{ field1: , field2:  ... }
Der  kann einer der folgenden sein:
  1. 1 oder true, um das Feld in den Rückgabedokumenten einzuschließen.

  2. 0 oder false, um das Feld auszuschließen.

HINWEIS

Für das _id-Feld müssen Sie nicht explizit _id: 1 angeben, um das _id-Feld zurückzugeben. Die Methode find() gibt immer das _id-Feld zurück, es sei denn, Sie geben _id: 0 an, um das Feld zu unterdrücken.

MEHR LESEN

7voto

Zur besseren Verständlichkeit habe ich eine ähnliche MySQL-Abfrage geschrieben.

Auswahl bestimmter Felder

MongoDB : db.collection_name.find({},{name:true,email:true,phone:true});

MySQL : SELECT name,email,phone FROM table_name;

Auswahl bestimmter Felder mit WHERE-Klausel

MongoDB : db.collection_name.find({email:'you@email.com'},{name:true,email:true,phone:true});

MySQL : SELECT name,email,phone FROM table_name WHERE email = 'you@email.com';

3voto

Dies funktioniert für mich,

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

keine Bedingung im WHERE-Klausel d.h., innerhalb der ersten geschweiften Klammern. innerhalb der nächsten geschweiften Klammern: Liste der Projektionsfeldnamen, die im Ergebnis benötigt werden, und 1 gibt an, dass das bestimmte Feld Teil des Abfrageergebnisses ist

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