2016-09-07 19 views
1

Hallo MongoDB Dokumentation gibt an, dass es mehrere Möglichkeiten gibt Dokumente in der Nähe einer geografischen Position abzurufen:Was ist der Unterschied zwischen „Abfragen“ und „Befehle“ in MongoDB

Ich verstehe den Unterschied zwischen Befehlen und Operator/Abfragen nicht? Diese Befehle scheinen genau dasselbe zu tun wie ihre Abfrage-Gegenstücke?

PS: Ich benutze scala reactivemongo Stecker in meiner Anwendung.

Antwort

1

Ich erinnerte mich, es von mongodb definitive guide 2nd edition (mongo 2.6) zu lesen, jedoch dieses Buch deckt nur mongo2.6 ab.

  1. Abfrage Befehl decken mehrere Aufgaben wie CRUD, Drop-Datenbank. Während Datenbank Befehl alles andere abdecken, einschließlich der administrativen Aufgaben, Klonen Datenbank usw. (in diesem Buch mongodb v2.6, ich in mongodbV3.2 queryCommand sicher bin, hat mehr Funktionen, die einige adminitrative Aufgaben abdecken kann)

  2. Abfrage in Mongoshell gab einen Cursor zurück, während der Datenbankbefehl ein Dokument zurückgab, das immer den Status "ok" hatte, und eine oder mehrere Informationen.


Beispiel Geolocation mit Datenbank Befehl Abfrage

db.runCommand({ 
     geoNear: <collection> , 
     near: { type: "Point" , coordinates: [ <coordinates> ] } , 
     spherical: true, 
     ... 
    }) 

Beispiel Datenbank mit Abfragebefehl Abfrage

db.places.find(
    { 
    location: 
     { $near : 
      { 
      $geometry: { type: "Point", coordinates: [ -73.9667, 40.78 ] }, 
      $minDistance: 1000, 
      $maxDistance: 5000 
      } 
     } 
    } 
) 
+0

Danke vdj4y so ist es nur ein syntaxe Unterschied? Warum sollten Sie in MongoDb zwei unterschiedliche Syntaxen für einen eingeschränkten Satz von Abfragen verwenden? Gibt es einen Leistungsunterschied? Werden erst neue Funktionen als Befehle eingeführt, bevor sie in die Abfragesprache integriert werden? – Antonin

Verwandte Themen