Ricerca…


introduzione

Esempi di query di base

Trova()

recuperare tutti i documenti in una raccolta

db.collection.find({});

recuperare i documenti in una raccolta utilizzando una condizione (simile a WHERE in MYSQL)

db.collection.find({key: value}); 
example
  db.users.find({email:"[email protected]"});

recuperare i documenti in una raccolta utilizzando condizioni booleane (Operatori di query)

//AND
db.collection.find( {
    $and: [
     { key: value }, { key: value } 
    ] 
})
//OR
db.collection.find( {
    $or: [
     { key: value }, { key: value } 
    ] 
})
//NOT
db.inventory.find( { key: { $not: value } } )

più operazioni e esempi booleani possono essere trovati qui

NOTA: find () continuerà a cercare la raccolta anche se è stata trovata una corrispondenza del documento, quindi è inefficiente quando viene utilizzata in una raccolta di grandi dimensioni, tuttavia modellando attentamente i dati e / o usando gli indici è possibile aumentare l'efficienza della ricerca ( )

Trova uno()

db.collection.findOne({});

la funzionalità di interrogazione è simile a find () ma questo finirà l'esecuzione nel momento in cui trova un documento corrispondente alla sua condizione, se usato con e oggetto vuoto, recupererà il primo documento e lo restituirà. findOne () documentazione di mongodb api

Documento di ricerca - Utilizzo delle condizioni AND, OR e IN

Tutti i documenti dalla collezione di students .

> db.students.find().pretty();

{
    "_id" : ObjectId("58f29a694117d1b7af126dca"),
    "studentNo" : 1,
    "firstName" : "Prosen",
    "lastName" : "Ghosh",
    "age" : 25
}
{
    "_id" : ObjectId("58f29a694117d1b7af126dcb"),
    "studentNo" : 2,
    "firstName" : "Rajib",
    "lastName" : "Ghosh",
    "age" : 25
}
{
    "_id" : ObjectId("58f29a694117d1b7af126dcc"),
    "studentNo" : 3,
    "firstName" : "Rizve",
    "lastName" : "Amin",
    "age" : 23
}
{
    "_id" : ObjectId("58f29a694117d1b7af126dcd"),
    "studentNo" : 4,
    "firstName" : "Jabed",
    "lastName" : "Bangali",
    "age" : 25
}
{
    "_id" : ObjectId("58f29a694117d1b7af126dce"),
    "studentNo" : 5,
    "firstName" : "Gm",
    "lastName" : "Anik",
    "age" : 23
}

Query mySql simile al comando precedente.

SELECT * FROM students;
db.students.find({firstName:"Prosen"});

{ "_id" : ObjectId("58f2547804951ad51ad206f5"), "studentNo" : "1", "firstName" : "Prosen", "lastName" : "Ghosh", "age" : "23" }

Query mySql simile al comando precedente.

SELECT * FROM students WHERE firstName = "Prosen";

E domande

db.students.find({
    "firstName": "Prosen",
    "age": {
        "$gte": 23
    }
});

{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }

Query mySql simile al comando precedente.

SELECT * FROM students WHERE firstName = "Prosen" AND age >= 23

O domande

db.students.find({
     "$or": [{
         "firstName": "Prosen"
     }, {
         "age": {
             "$gte": 23
         }
     }]
 });

{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcb"), "studentNo" : 2, "firstName" : "Rajib", "lastName" : "Ghosh", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcc"), "studentNo" : 3, "firstName" : "Rizve", "lastName" : "Amin", "age" : 23 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcd"), "studentNo" : 4, "firstName" : "Jabed", "lastName" : "Bangali", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dce"), "studentNo" : 5, "firstName" : "Gm", "lastName" : "Anik", "age" : 23 }

Query mySql simile al comando precedente.

SELECT * FROM students WHERE firstName = "Prosen" OR age >= 23

E query O

db.students.find({
        firstName : "Prosen",
        $or : [
            {age : 23},
            {age : 25}
        ]
});

{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }

Query mySql simile al comando precedente.

SELECT * FROM students WHERE firstName = "Prosen" AND age = 23 OR age = 25;

IN Queries Queste query possono migliorare l'uso multiplo di query OR

db.students.find(lastName:{$in:["Ghosh", "Amin"]})

{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcb"), "studentNo" : 2, "firstName" : "Rajib", "lastName" : "Ghosh", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcc"), "studentNo" : 3, "firstName" : "Rizve", "lastName" : "Amin", "age" : 23 }

Query mySql simile al comando precedente

select * from students where lastName in ('Ghosh', 'Amin')

metodo find () con Projection

La sintassi di base del metodo find() con la proiezione è la seguente

> db.COLLECTION_NAME.find({},{KEY:1});

Se si desidera mostrare tutti i documenti senza il campo Età, il comando è il seguente

db.people.find({},{age : 0});

Se si desidera mostrare tutti i documenti nel campo Età, il comando è il seguente

Metodo Find () con Projection

In MongoDB, proiezione significa selezionare solo i dati necessari piuttosto che selezionare interi dati di un documento.

La sintassi di base del metodo find() con la proiezione è la seguente

> db.COLLECTION_NAME.find({},{KEY:1});

Se si desidera mostrare tutto il documento senza il campo Età, il comando è il seguente

> db.people.find({},{age:0});

Se vuoi mostrare solo il campo età, il comando è il seguente

> db.people.find({},{age:1});

Nota: il campo _id viene sempre visualizzato durante l'esecuzione del metodo find() , se non si desidera questo campo, è necessario impostarlo come 0 .

> db.people.find({},{name:1,_id:0});

Nota: 1 è usato per mostrare il campo mentre 0 è usato per nascondere i campi.

limitare, saltare, ordinare e contare i risultati del metodo find ()

Analogamente ai metodi di aggregazione anche con il metodo find () hai la possibilità di limitare, saltare, ordinare e contare i risultati. Diciamo che abbiamo la seguente collezione:

db.test.insertMany([
    {name:"Any", age:"21", status:"busy"}, 
    {name:"Tony", age:"25", status:"busy"}, 
    {name:"Bobby", age:"28", status:"online"}, 
    {name:"Sonny", age:"28", status:"away"}, 
    {name:"Cher", age:"20", status:"online"}
])

Per elencare la raccolta:

db.test.find({})

Tornerà:

{ "_id" : ObjectId("592516d7fbd5b591f53237b0"), "name" : "Any", "age" : "21", "status" : "busy" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b1"), "name" : "Tony", "age" : "25", "status" : "busy" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b2"), "name" : "Bobby", "age" : "28", "status" : "online" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }

Per saltare i primi 3 documenti:

db.test.find({}).skip(3)

Tornerà:

{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }

Per ordinare decrescente in base al nome del campo:

db.test.find({}).sort({ "name" : -1})

Tornerà:

{ "_id" : ObjectId("592516d7fbd5b591f53237b1"), "name" : "Tony", "age" : "25", "status" : "busy" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b2"), "name" : "Bobby", "age" : "28", "status" : "online" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b0"), "name" : "Any", "age" : "21", "status" : "busy" }

Se vuoi ordinare in ordine ascendente, sostituisci 1 con 1

Per contare i risultati:

db.test.find({}).count()

Tornerà:

5

Sono consentite anche combinazioni di questi metodi. Ad esempio, ottieni 2 documenti dalla raccolta ordinata discendente saltando il primo 1:

db.test.find({}).sort({ "name" : -1}).skip(1).limit(2)

Tornerà:

{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow