Net zoals we een select kunnen doen op een relationele database, gebruiken we find and findOne om onze objecten terug op te roepen.
findOne geeft ons 1 element terug, nl. het eerste element dat matcht met de query:
let result:Pokemon=awaitclient.db("Les").collection("pokemon").findOne<Pokemon>({});console.log(result);
Merk op dat we als parameter {} meegeven. Dit komt overeen met een lege "where" clause in relationele database termen. Wanneer we bepaalde velden willen matchen, moeten we een object meegeven. Dit object bevat properties. Deze properties komen overeen met de namen van de properties van het object waar je naar zoekt:
let result:Pokemon=awaitclient.db("Les").collection("pokemon").findOne<Pokemon>({name:"eevee"});console.log(result);
Pokemon objecten hebben de property name. Hierboven zoeken we dus alle Pokemon met "name" gelijk aan "eevee".
Je kan ook een ObjectId gebruiken om te zoeken naar een specifiek object:
let result:Pokemon=awaitclient.db("Les").collection("pokemon").findOne<Pokemon>({_id:newObjectId("5f3b3b3b3b3b3b3b3b3b3b3b")});console.log(result);
Je moet hier uiteraard ook de ObjectId importeren:
import { MongoClient, ObjectId } from"mongodb";
find
Wanneer we meerdere objecten willen ophalen, gebruiken we find:
let cursor =client.db("Les").collection("pokemon").find<Pokemon>({});let result =awaitcursor.toArray();console.log(result);
Let op: find geeft niet direct een resultaat terug, maar een cursor. Je kan dit cursor object gebruiken om de resultaten op te halen, door bv. toArray() te gebruiken (deze geeft een promise terug!).
Als we dit allemaal bij elkaar zetten, krijgen we volgende code:
import { MongoClient, ObjectId } from"mongodb";consturi="mongodb+srv://<username>:<password>@<your-cluster-url>/test?retryWrites=true&w=majority";constclient=newMongoClient(uri);interfacePokemon { _id?:ObjectId, name:string, age:number}asyncfunctionmain() {try {// Connect to the MongoDB clusterawaitclient.connect();let pikachu:Pokemon= { name:"pikachu", age:12 };constresult=awaitclient.db("Les").collection("pokemon").insertOne(pikachu);console.log(`New document created with the following id: ${result.insertedId}`);let cursor =client.db("Les").collection("pokemon").find<Pokemon>({});let pokemons =awaitcursor.toArray();console.log(pokemons); } catch (e) {console.error(e); } finally {awaitclient.close(); }}