MongoDB seleziona dove nell'array di _id?


90

è possibile in mongo db selezionare i documenti della raccolta come in SQL:

SELECT * FROM collection WHERE _id IN (1,2,3,4);

o se ne ho uno _id arraydevo selezionarne uno per uno e poi ricomporre i array/objectrisultati?

Risposte:


165

Facile :)

db.collection.find( { _id : { $in : [1,2,3,4] } } );

tratto da: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in


Otteniamo ancora vantaggi dall'indicizzazione? Gli ID in questo caso vengono passati come semplici stringhe ...
— Rafal Pastuszak

2
Tu fai. Tuttavia la complessità temporale è lineare (n), non logaritmica / costante. Senza indice sarebbe n ^ 2.
— Petr Brazdil

Non O(log(n) * m)dov'è nla dimensione della raccolta e mil numero di ID passati?
— Guig

8
Devi usare la funzione ObjectId, se "_id" è l'ID oggetto - {_id: {$ in: [ObjectId ("5a633609670aeb6f93b88b23")]}}
— Pax Beach

5

list è un array di ID

In questo elenco di codici c'è l'array di ID nella raccolta utenti

var list = ["5883d387971bb840b7399130","5883d389971bb840b7399131","5883d38a971bb840b7399132"]

    .find({ _id: {$in : list}})

4
Il codice non funziona. Sembra dover impostare ID come ObjectId ("5883d387971bb840b7399130")
— Pax Beach

0

Perché mongodb utilizza bsone per bson è tipi di attributi importanti. e poiché _idè ObjectIdsi deve utilizzare in questo modo:

db.collection.find( { _id : { $in : [ObjectId('1'),ObjectId('2')] } } );

e in mongodb compassuso in questo modo:

{ "_id" : { $in : [ObjectId('1'),ObjectId('2')] } }

Nota: objectId nella stringa ha 24lunghezza.


-4

Questo non è correlato alla query mongo. Conoscevo SQL e utilizzavo l'IDE di Studio3T per interrogare un database mongo usando SQL. Se sei uno come me, voglio sottolineare che il valore id deve essere typecast. Quindi la query sarà simile a:

SELECT _id from <collectionName>
WHERE _id = ObjectId("5883d387971bb840b7399130");

2
Questo non risolve affatto la domanda.
— loctrice

Non risponde, d'accordo. Può essere d'aiuto con alcuni IDE come Studio3T, che ti consentono di interagire con mongoDB usando SQL. Là la risposta ha applicazione. Inoltre, è per evidenziare che anche in quel caso il _id deve essere castato di tipo.
— sourabhxiii

1
si tratta di mongodb
— Rohit
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.