mongo-dart / examples / queries.dart

#import("../lib/mongo.dart");
#import("dart:builtin");
main(){  
  Db db = new Db("mongo-dart-test");
  var id;
  DbCollection coll;
  db.open().chain((c){
    print('connection open');
    coll = db.collection("simple_data");
    coll.remove();
    print('Packing data to insert into collection by Bson...');
    for (var n = 0; n<1000; n++){  
      coll.insert({"my_field":n,"str_field":"str_$n"});
    }      
    print('Done. Now sending it to MongoDb...');
    return coll.findOne(query().eq("my_field", 17));
  }).chain((val){
      print("Filtered by my_field=17 $val");
      id = val["_id"];
      return coll.findOne(query().id(id));
  }).chain((val){      
      print("Filtered by _id=$id: $val");    
      print("Removing doc with _id=$id");
      coll.remove(query().id(id));
      return coll.findOne(query().id(id));
  }).chain((val){      
      print("Filtered by _id=$id: $val. There more no such a doc");
      return coll.find(query().gt("my_field", 995)).each((v)=>print(v));
  }).chain((val){    
    print("Filtered by my_field gt 700, lte 703");
    return coll.find(
      query().range("my_field", 700, 703, minInclude: false)
        ).each((v)=>print(v));
  }).chain((val){
      print("Filtered by str_field match '^str_(5|7|8)17\$'");
      return coll.find(
        query().match('str_field', 'str_(5|7|8)17\$').sortBy("str_field",descending:true).sortBy("my_field")
          ).each((v)=>print(v));
  }).chain((val){
    return coll.findOne(
      query().match('str_field', 'str_(5|7|8)17\$').sortBy("str_field",descending:true).sortBy("my_field").explain());
  }).chain((explanation){
    print("Query explained: $explanation");
    print('Now where clause with jscript code: where("this.my_field % 100 == 35")');
    print(query().where("this.my_field == 517"));
    return coll.find(query().where("this.my_field % 100 == 35")).each((v)=>print(v));
  }).then((v){
     db.close();        
  });
}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.