您的位置:首页 > 数据库 > Mongodb

MongoDB番外篇

2016-06-01 16:57 507 查看
最近过的好烦恼~~

无聊的时候就会翻出自己的flash书本看看,之前对actionscript并不了解,慢慢的了解一些了,这里超级热,热的我看不进去,就滚过来码字了~~

可是我这里要说还是MongoDB

这里就写一写MongoDB中一些特别的东西吧,特不特别我也不清楚,重要的是现在我想码字了

rs.slaveOk()//在从主机访问数据设置的时候要先执行这句,因为主从模式下为了避免主从节点的数据不一致的问题,从节点是不能查看以及修改数据的,必须执行这句之后才可以。
mongod --dbpath /usr/local/mongodb/mongodb/data/db/ --slave --source=192.168.1.202:27017 –autoresync//参数autoresync参数为了是强制从节点同步主节点的数据
db.table.createIndex({"id":"hashed"})//创建索引
db.table.getIndexes()//默认在id字段上有索引,创建索引后则应该有两个索引才对。
db.table.ensureIndex({"somefield":1},"background":true)//在后台建立索引


有两种方法

方法1,db.runCommand({“distanct”:”表名”,”key”:”所要处理的键”,”query”:{查询条件}}).values

//这个可以获得所有不同的distinct的值

db.runCommand({“distanct”:”表名”,”key”:”所要处理的键”,”query”:{查询条件}}).values.length

//可以获得distinct字段的数量

方法2,代表[‘表名’].distinct(‘要进行distinct的字段’).Length

db.表名.findOne()._id.getTimestamp();//获得_id相应的时间值。

在MongoDB中是文档存储的,也就是模式自由的,我们所取到的文档中实际上就是MongoDB中的类,DBObject(接口)BasicDBObject(实现类),这是查询获得的结果,是一种K-V结构的。文档由很多的k-v结构组成。

Mongo m = new Mongo( "192.168.21.111" , 27017 );
//选择数据库,如果没有这个数据库的话,会自动建立
DB  db = m.getDB( "mydb" );
DBCollection collection = db.getCollection("myCollectionTest");

BasicDBObject doc = new BasicDBObject(); //文档或者可以看作是k-v记录集
doc.put("name", "MongoDB");
doc.put("type", "database");
doc.put("count", 1);

BasicDBObject info = new BasicDBObject();
info.put("x", 203);
info.put("y", 102);
doc.put("info", info);

//插入一条数据,数据如下
// {
//     "name" : "MongoDB",
//     "type" : "database",
//     "count" : 1,
//     "info" : {
//                 x : 203,
//                 y : 102
//               }
//  }
// 可以循环插入多条数据
collection.insert(doc);
//查找第一条数据,显示如下,_id是系统自动帮加上的,全局唯一
//{ "_id" : "49902cde5162504500b45c2c" , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
DBObject myDoc = collection.findOne();
System.out.println(myDoc);

//插入多条数据
for (int i=0; i < 100; i++) {
collection.insert(new BasicDBObject().append("i", i));
}
//获取文档条数
System.out.println(collection.getCount());

//使用Cursor 获取所有文档
DBCursor cursor = collection.find();
try {
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close();
}

//查找操作,获取单条记录
//{ "_id" : "49903677516250c1008d624e" , "i" : 71 }
BasicDBObject query = new BasicDBObject();
query.put("i", 71);
cursor = collection.find(query);
try {
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close();
}

//查找 i>50的项
query = new BasicDBObject();
query.put("i", new BasicDBObject("$gt", 50));  // e.g. find all where i > 50
cursor = collection.find(query);
try {
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close();
}

//查找 20<i<=30
query = new BasicDBObject();
query.put("i", new BasicDBObject("$gt", 20).append("$lte", 30));  // i.e.   20 < i <= 30
cursor = collection.find(query);
try {
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close();
}

//修改 i=71的一项
query = new BasicDBObject();
query.put("i", 71);
BasicDBObject update = new BasicDBObject();
update.put("i", 710);
DBObject dbobj = collection.findAndModify(query, update);
System.out.println(dbobj);

//修改 i=72的一项
query = new BasicDBObject();
query.put("i", 72);
update = new BasicDBObject();
update.put("i", 720);
WriteResult result = collection.update(query, update);
System.out.println(result);

//删除i=61的项
query = new BasicDBObject();
query.put("i", 61);
collection.findAndRemove(query);
//删除i=62的项
BasicDBObject remove = new BasicDBObject();
remove.put("i", 62);
collection.remove(remove);

//创建索引 1为升序、-1为降序
collection.createIndex(new BasicDBObject("i", 1));  // create index on "i", ascending

//获取索引列表
List<DBObject> list = collection.getIndexInfo();
for (DBObject o : list) {
System.out.println(o);
}

//获取数据库列表
for (String s : m.getDatabaseNames()) {
System.out.println(s);
}
//获取集合列表
Set<String> colls = db.getCollectionNames();
for (String s : colls) {
System.out.println(s);
}

//删除数据库
//m.dropDatabase("my_new_db");

} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


参考自http://blog.csdn.net/xyz_lmn/article/details/8071565
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb