Connessione a MongoDB in Dart

Mattepuffo's logo
Connessione a MongoDB in Dart

Connessione a MongoDB in Dart

Ho un pò abbandonato Dart per vari motivi; ma visto che lo sviluppo ha accelerato e che sono state introdotte diverse novità, ho deciso di rispolverarlo.

Oggi vediamo come connetterci ad un database MongoDB.

Prima di tutto abbiamo bisogno della libreria apposita; nel file pubspec.yaml inserite questo:

dependencies:
  mongo_dart: ^0.4.4

Io sto usando IntelliJ come IDE, e fa praticamente tutto da solo per installare le dipendenze.

Fatto questo vediamo il codice:

import 'package:mongo_dart/mongo_dart.dart';

void main(List<String> arguments) async {
  var db = Db('mongodb://127.0.0.1:27017/test');

  await db.open();

  if (db.isConnected) {
    var collection = db.collection("persone");

    print("CANCELLO DATI PER TEST");
    await collection.drop();

    print("INSERISCO UN RECORD");
    await collection.insertAll([
      {"nome": "matteo"}
    ]);

    print("LEGGO I RECORDS");
    await collection.find().forEach((element) {
      print(element);
    });

    print("INSERISCO ALTRI DUE RECORDS CON ALTRI CAMPI");
    await collection.insertAll([
      {"nome": "ciccio", "eta": 37},
      {"nome": "franco", "email": "franco@fr.it"},
    ]);

    print("LEGGO I RECORDS DI NUOVO, VISUALIZZO SOLO IL NOME");
    await collection.find().forEach((element) {
      print(element['nome']);
    });

    print("CHIUDO IL DATABASE");
    await db.close();
  } else {
    print("DATABASE NON CONNESSO");
  }
}

Per fare dei test, concello ogni volta i dati della collezione; ovviamente state attenti in produzione.

Questo perchè non ho impostato indici, e quindi ogni volta inserirebbe tutti i dati duplicandoli.

Poi, ho letto due volte il db; questo l'output:

CANCELLO DATI PER TEST
INSERISCO UN RECORD
LEGGO I RECORDS
{_id: ObjectId("60507518bd50b48f703b9d7f"), nome: matteo}
INSERISCO ALTRI DUE RECORDS CON ALTRI CAMPI
LEGGO I RECORDS DI NUOVO, VISUALIZZO SOLO IL NOME
matteo
ciccio
franco
CHIUDO IL DATABASE

Come vedete una volta stampo tutti i dati del records; la seconda volta solo un campo.

Enjoy!


Share this Post

Commentami!