среда, 9 июля 2014 г.

Comparison Matrix



Operation descriptionMongoClient ShellNodeJs DriverJava DriverPython Driver
Подключение к базе
$ mongo dbname
$ mongo 192.169.0.5/dbname
$ mongo 192.169.0.5:9999/dbname

$ mongo
>use dbname
var MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://localhost:27017/m101'), function(err, db) {
  if(err) throw err;

  db
}
import com.mongodb.DB;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;

final MongoClient client = new MongoClient(new MongoClientURI("mongodb://localhost"));
final DB db = mongoClient.getDB("dbname");

Получение ссылки на коллекцию
>db.collectionName
var MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://localhost:27017/m101'), function(err, db) {
  if(err) throw err;

  var collection = db.collection('collectionName');
}
import com.mongodb.DB;
import com.mongodb.DBCollection;

final DBCollection collection = db.getCollection("collectionName");

Выборка
>db.students.find({
  $or: [
    { "resume.projects.3.months": {$lte: 3}},
    {currentProjects: {$in: ["Pizza Commerce", "AdvNet"]}}
  ]
})
var MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://localhost:27017/m101'), function(err, db) {
  if(err) throw err;
  
  /*
  следующий подход для варианта, когда есть вероятность,
  что полей может быть очень много и нам нужно обеспечить
  отпускание потока ноды 
  */
  db.collection('students').find({
    $or: [
      { "resume.projects.3.months": {$lte: 3}},
      {currentProjects: {$in: ["Pizza Commerce", "AdvNet"]}}
    ]
  }).each(function(err, doc){
    console.log(doc);
  });

  /*
  следующий подход для большинства случаев, где мы 
  перестраховываемся лимитированием от чрезмерного
  количества результатов
  */
  db.collection('students').find({
    $or: [
      { "resume.projects.3.months": {$lte: 3}},
      {currentProjects: {$in: ["Pizza Commerce", "AdvNet"]}}
    ]
  }).sort({name: -1}).limit(5).toArray(function(err, items){
    console.log(items);
  });

  
}
import com.mongodb.BasicDBObject;
import com.mongodb.DBCursor;
import java.util.List;

List<DBobject> posts;
BasicDBObject query = new BasicDBObject("tags", tag);

DBCursor cursor = postsCollection.find(query).sort(new BasicDBObject().append("date", -1)).limit(10);
try {
  posts = cursor.toArray();
} finally {
  cursor.close();
}

...OR...

/*Можно также поработать с курсором определенное время*/
while (cursor.hasNext()) {
  posts.add(cursor.next());
}

Изменение конкретной записи
>var j = db.students.findOne()
>j.name = "Tim"
>delete j.surname
>db.students.save(j)
Получение информации о протекании запроса
> db.students.findOne().explain()
var cursor = db.collection('students').findOne({a: 1});
cursor.explain(function(err, explain_output){
  if(err) throw err;

  console.log(explain_output);
});
Явное указание какой именно индекс использовать в запросе
> db.students.findOne({x: 100, y: 200, z: "Some string value"}).hint({x: 1, y:1, z: 1})
var cursor = db.collection('students').find({a: 1}, {}, 
  { 'hint': {$natural: 1}}
);
Подключение к репликасету Запустить несколько процессов в данном случае на одном хосте:
user@localhost$ mkdir -p /data/rs1 /data/rs2 /data/rs3
user@localhost$ mongod --replSet m101 --logpath "1.log" --dbpath /data/rs1 --port 27017 --oplogSize 64 --fork --smallfiles
user@localhost$ mongod --replSet m101 --logpath "2.log" --dbpath /data/rs2 --port 27018 --oplogSize 64 --smallfiles --fork
user@localhost$ mongod --replSet m101 --logpath "3.log" --dbpath /data/rs3 --port 27019 --oplogSize 64 --smallfiles --fork

Теперь соединить всех в одну репликусет через введение данных в процесс, который будет праймери:
$ mongo --port 27018 < echo "config = { _id: "m101", members:[ \
          { _id : 0, host : "localhost:27017", priority:0, slaveDelay:5}, \
          { _id : 1, host : "localhost:27018"},\
          { _id : 2, host : "localhost:27019"} ] \
}; \
rs.initiate(config); \
rs.status(); \
"
Или так:
user@localhost$ mongo --port 27018

> rs.status()
> rs.initiate()
> rs.add("localhost:27017")
> rs.add("localhost:27019")
var MongoClient = require('mongodb').MongoClient;

MongoClient.connect("mongodb://localhost:30001," +
                    "localhost:30002," +
                    "localhost:30003/course", function(err, db) {
  ...
});

Комментариев нет:

Отправить комментарий