Heim > Datenbank > MySQL-Tutorial > Einführung in gängige Abfrageoperationen in MongoDB (mit Code)

Einführung in gängige Abfrageoperationen in MongoDB (mit Code)

不言
Freigeben: 2019-03-23 16:39:59
nach vorne
3740 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine Einführung in gängige Abfrageoperationen in MongoDB (mit Code). Ich hoffe, dass er für Freunde hilfreich ist.

Vorwort: Das verwendete Visualisierungstool ist Studio 3T, offizielle Website-->https://studio3t.com/
Versionsnummer: MongoDB-Shell-Version v3.4.2
Verwendung: https :/ /blog.csdn.net/weixin_...
Was Sie sehen sollten: Konzentrieren Sie sich auf die Operatoren.
So suchen Sie: Drücken Sie auf dieser Seite Strg+F und geben Sie die zu suchenden Schlüsselwörter ein

1. Häufig verwendete Abfrage
Löschen Sie zur Vereinfachung der Bedienung alle Dokumente vor dem Einfügen die Originaldaten (Bitte vorsichtig im Projekt vorgehen!):

db.getCollection("inventory").deleteMany({})
Nach dem Login kopieren

0 Alle Dokumente anzeigen

db.getCollection("inventory").find({})
Nach dem Login kopieren

1. Objektsuche
1.1. Originaldaten

db.inventory.insertMany( [
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);
Nach dem Login kopieren
Nach dem Login kopieren

1.2. Suchen Sie nach Dokumenten, bei denen size.h gleich 14, size.w gleich 21 und size.uom gleich cm ist

db.inventory.find( { size: { h: 14, w: 21, uom: "cm" } } )
Nach dem Login kopieren

1.3. Finden Sie size.uom-Dokumente gleich in

db.inventory.find( { "size.uom": "in" } )
Nach dem Login kopieren

Hinweis: Achten Sie beim Nachschlagen einzelner Objekteigenschaften darauf, Anführungszeichen anzugeben!

1.4. Das angegebene Feld im Objekt suchen und zurückgeben

db.inventory.find(
   { status: "A" },
   { item: 1, status: 1, "size.uom": 1 }
)
Nach dem Login kopieren

1.5. Das angegebene Feld im Objekt suchen und filtern

2. Array-Suche 2.1. Originaldaten

db.inventory.find(
   { status: "A" },
   { "size.uom": 0 }
)
Nach dem Login kopieren
2.2. Dokumente mit Tags=["red", "blank"]

db.inventory.insertMany([
   { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] },
   { item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14, 21 ] },
   { item: "paper", qty: 100, tags: ["red", "blank", "plain"], dim_cm: [ 14, 21 ] },
   { item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] },
   { item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ] }
]);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Hinweis: Dies ist nicht der Fall eine Einschlussbeziehung, d. h. Tags: ["red", "blank", "plain"] sind nicht enthalten

2.3 Suchen Sie nach Dokumenten mit Tags, die rot

db.inventory.find( { tags: ["red", "blank"] } )
Nach dem Login kopieren
Hinweis: Sie können db.inventory.find( { tags: ["red"] } ) nicht so schreiben, was bedeutet, dass Sie nach Dokumenten suchen, deren Tags rot sind

3. Suchen Sie nach Objekten, die in einem Array enthalten sind Array, das die Bedingungen erfüllt, wird das gesamte Array zurückgegeben

db.inventory.find( { tags: "red" } )
Nach dem Login kopieren
Befolgen Sie strikt die Reihenfolge der Felder. Wenn die Reihenfolge der Felder geändert wird, lautet sie
wie folgt:

db.inventory.insertMany( [
   { item: "journal", instock: [ { warehouse: "A", qty: 5 }, { warehouse: "C", qty: 15 } ] },
   { item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] },
   { item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 15 } ] },
   { item: "planner", instock: [ { warehouse: "A", qty: 40 }, { warehouse: "B", qty: 5 } ] },
   { item: "postcard", instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);
Nach dem Login kopieren
Nach dem Login kopieren
3.3. Suchen Sie das Elementobjekt im Array. Es gibt ein Elementobjekt mit qty=5 oder Warehouse=A

db.inventory.find( { "instock": { warehouse: "A", qty: 5 } } )
Nach dem Login kopieren
3.4 des Objekts (oder anderer Elementobjekte). , finde das Objekt im Array und gebe ein bestimmtes Attribut des Objekts zurück找 不 到
db.inventory.find( { "instock": { qty: 5, warehouse: "A" } } )
Nach dem Login kopieren
4. Normale Suche

4.1, Originaldaten

db.inventory.find( { "instock.qty": 5, "instock.warehouse": "A" } )
Nach dem Login kopieren
4.2, Abfrage und geben Sie die angegebenen Felder zurück

Unter der Bedingung Status=A, geben Sie _id, Artikel, Statusfelder zurück

db.inventory.find( { status: "A" }, { item: 1, status: 1, "instock.qty": 1 } )
Nach dem Login kopieren
Ergebnis:

db.inventory.insertMany( [
  { item: "journal", status: "A", size: { h: 14, w: 21, uom: "cm" }, instock: [ { warehouse: "A", qty: 5 } ] },
  { item: "notebook", status: "A",  size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "C", qty: 5 } ] },
  { item: "paper", status: "D", size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "A", qty: 60 } ] },
  { item: "planner", status: "D", size: { h: 22.85, w: 30, uom: "cm" }, instock: [ { warehouse: "A", qty: 40 } ] },
  { item: "postcard", status: "A", size: { h: 10, w: 15.25, uom: "cm" }, instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);
Nach dem Login kopieren
4.3. Aus 4.2 geht hervor, dass _id automatisch ist getragen und kann wie folgt entfernt werden


Abfrage ohne (entfernte) ID:

db.inventory.find( { status: "A" }, { item: 1, status: 1 } )
Nach dem Login kopieren

Hinweis: Zusätzlich zur ID, die unter Beibehaltung anderer Felder herausgefiltert werden kann , andere Felder dürfen nicht 0 sein und gleichzeitig 1 schreiben
, wie zum Beispiel:

{ "_id" : ObjectId("5c91cd53e98d5972748780e1"), 
    "item" : "journal", 
    "status" : "A"}
// ----------------------------------------------
{ "_id" : ObjectId("5c91cd53e98d5972748780e2"), 
    "item" : "notebook", 
    "status" : "A"}
// ----------------------------------------------
{ "_id" : ObjectId("5c91cd53e98d5972748780e5"), 
    "item" : "postcard", 
    "status" : "A"}
Nach dem Login kopieren

Es wird ein Fehler gemeldet

4.4. Bestimmte Felder ausschließen und andere Felder zurückgeben

5. Null- oder nicht vorhandene Schlüssel finden

Einführung in gängige Abfrageoperationen in MongoDB (mit Code)Originaldaten

rrree

5.2. Finden Sie Dokumente, bei denen item null ist, oder Dokumente, die item nicht enthalten

2 Operatoren
$lt kleiner als

1.1, Originaldaten

db.inventory.find( { status: "A" }, { item: 1, status: 1, _id: 0 } )
Nach dem Login kopieren

1.2. Suchen Sie die Dokumentensammlung mit „size.h“ kleiner als 15

db.inventory.find( { status: "A" }, { item: 1, status: 0 } )
Nach dem Login kopieren
1.3. Verwenden Sie $lt mit AND
, um Dokumente zu finden, bei denen size.h ist kleiner als 15, size.uom ist in und Status ist D.
db.inventory.find( { status: "A" }, { status: 0, instock: 0 } )
Nach dem Login kopieren

2. $lte kleiner als gleich ist kleiner oder gleich

Originaldaten

db.inventory.insertMany([
   { _id: 1, item: null },
   { _id: 2 }
])
Nach dem Login kopieren
Nach dem Login kopieren

2.2. Suchen Sie nach Dokumenten mit instock.qty kleiner oder gleich 20. Solange ein Objekt im Array die Bedingungen erfüllt, wird das gesamte Array zurückgegeben

db.inventory.find( { item: null } )
Nach dem Login kopieren

3 , $gt größer als >3.1, Originaldaten

db.inventory.insertMany( [
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);
Nach dem Login kopieren
Nach dem Login kopieren
3.2, Dokumente mit dim_cm größer als 25 finden

db.inventory.find( { "size.h": { $lt: 15 } } )
Nach dem Login kopieren

Hinweis: solange es Elemente enthält Größer als 25 Arrays sind alle qualifiziert
3.3. Finden Sie Dokumente, bei denen dim_cm größer als 15 oder kleiner als 20 oder sowohl größer als 15 als auch kleiner als 20 ist

db.inventory.find( { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" } )
Nach dem Login kopieren

3.4. Finden Sie Dokumente, bei denen dim_cm größer als 22 und weniger als 30 Dokumente ist (es geht darum, zu beurteilen, ob ein bestimmtes Element des Arrays größer als 22 und kleiner als 30 ist, anstatt alle Elemente des Arrays zu beurteilen)

db.inventory.insertMany( [
   { item: "journal", instock: [ { warehouse: "A", qty: 5 }, { warehouse: "C", qty: 15 } ] },
   { item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] },
   { item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 15 } ] },
   { item: "planner", instock: [ { warehouse: "A", qty: 40 }, { warehouse: "B", qty: 5 } ] },
   { item: "postcard", instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);
Nach dem Login kopieren
Nach dem Login kopieren

3.5. Suche basierend auf der Array-PositionSuche Das zweite

Dokument von dim_cm ist größer als 25

db.inventory.find( { 'instock.qty': { $lte: 20 } } )
Nach dem Login kopieren

4

Tags finden
Die Länge beträgt 3Dokument

db.inventory.insertMany([
   { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] },
   { item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14, 21 ] },
   { item: "paper", qty: 100, tags: ["red", "blank", "plain"], dim_cm: [ 14, 21 ] },
   { item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] },
   { item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ] }
]);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

$gte ist größer oder gleichOriginaldaten

db.inventory.find( { dim_cm: { $gt: 25 } } )
Nach dem Login kopieren
5.2. Finden Sie die Menge des ersten Elements (Objekts) der Array-Dokumentensammlung größer oder gleich 20
db.inventory.find( { dim_cm: { $gt: 15, $lt: 20 } } )
Nach dem Login kopieren

6. Attributübereinstimmung mit dem $elemMatch-Objekt 6.1. Suchen Sie nach Objekten im Array, die mit qty=5, Warehouse="A" übereinstimmen, und geben Sie die Dokumentensammlung zurück

db.inventory.find( { dim_cm: { $elemMatch: { $gt: 22, $lt: 30 } } } )
Nach dem Login kopieren
6.2. Suchen Sie die Dokumentensammlung im Array, die mit qty größer als 10 und

kleiner oder gleich 20

db.inventory.find( { "instock": { $elemMatch: { qty: { $gt: 10, $lte: 20 } } } } )
Nach dem Login kopieren

如果不使用 $elemMatch 的话,就表示 qty 大于 10 或者小于等于 20,官方文档意思是,不在数组的某一个元素找 既满足条件 A 又满足条件 B 的 qty,而是在数组的所有元素上找,满足条件 A 或满足条件 B 的 qty

db.inventory.find( { "instock.qty": { $gt: 10,  $lte: 20 } } )
Nach dem Login kopieren

7、$slice 返回数组特定位置的元素
7.1、原数据

db.inventory.insertMany([
   { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] },
   { item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14, 21 ] },
   { item: "paper", qty: 100, tags: ["red", "blank", "plain"], dim_cm: [ 14, 21 ] },
   { item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] },
   { item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ] }
]);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

7.2、查找并返回 tags 数组的最后一个元素

db.inventory.find( { item: "journal" }, { item: 1, qty: 0, tags: { $slice: -1 } } )
Nach dem Login kopieren

结果:

{ 
    "_id" : ObjectId("5c91dce5e98d5972748780e6"), 
    "item" : "journal", 
    "tags" : [
        "red"
    ]
}
Nach dem Login kopieren

8、$type 返回指定类型的元素
8.1、原数据

db.inventory.insertMany([
   { _id: 1, item: null },
   { _id: 2 }
])
Nach dem Login kopieren
Nach dem Login kopieren

8.2、返回 null 类型的数据

db.inventory.find( { item : { $type: 10 } } )
Nach dem Login kopieren

类型如下:

Einführung in gängige Abfrageoperationen in MongoDB (mit Code)

详细文档请看:https://docs.mongodb.com/manu...

9、$exists 返回存在/不存在的键
查找不存在 item 键的数据

db.inventory.find( { item : { $exists: false } } )
Nach dem Login kopieren

10、$all 包含
10.1、原数据

db.inventory.insertMany([
   { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] },
   { item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14, 21 ] },
   { item: "paper", qty: 100, tags: ["red", "blank", "plain"], dim_cm: [ 14, 21 ] },
   { item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] },
   { item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ] }
]);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

10.2、查找 tags 数组包含 ["red", "blank"] 的文档

db.inventory.find( { tags: { $all: ["red", "blank"] } } )
Nach dem Login kopieren

综上:
数组用的:$all$size$slice
对象用的:$elemMatch

Query查询的详细文档请看:https://docs.mongodb.com/manu...
Operator的详细文档请看:https://docs.mongodb.com/manu...

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的mongodb视频教程栏目!

Das obige ist der detaillierte Inhalt vonEinführung in gängige Abfrageoperationen in MongoDB (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
Parameterverständnis von Mongodb
Aus 1970-01-01 08:00:00
0
0
0
Verwendung von Symfony2 Mongodb
Aus 1970-01-01 08:00:00
0
0
0
mongodb _id umbenennen
Aus 1970-01-01 08:00:00
0
0
0
MongoDB schließt Verbindung – Stapelüberlauf
Aus 1970-01-01 08:00:00
0
0
0
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage