for(var i=0;i<100000;i++){
var patid="pat"+i;
var patname="name"+i;
var sex="M";
var age=parseInt(100*Math.random(i));
db.patient.insert({"patid":patid,"patname":patname,"sex":sex,"age":age});
}
#普通索引
db.patient.ensureIndex({"age":1})
#唯一索引
db.patient.ensureIndex({"patid":1},{"unique":true})
#复合索引
db.patient.ensureIndex({"patname":1,"age":1})
#解释执行计划
db.patient.find({"patid":"pat1000"}).explain();
db.patient.find({"age":99}).explain();
#指定索引进行查询
db.patient.find({"age":99}).hint({"patname":1,"age":1}).explain();
#枚举索引
db.patient.getIndexes();
#删除索引
db.patient.dropIndex("age_1");
Category Archives: Database
MongoDB副本集(Shell)
0、原理

1、开启副本集节点
mongod --dbpath=D:\Database\MongoDB3\dbc0 --port=27017 --replSet neohope mongod --dbpath=D:\Database\MongoDB3\dbc1 --port=27018 --replSet neohope mongod --dbpath=D:\Database\MongoDB3\dbc2 --port=27019 --replSet neohope
2、初始化副本集
mongo --port 27017
config_rs={_id:'neohope',members:[{_id:0,host:'localhost:27017'},{_id:1,host:'localhost:27018'},{_id:2,host:'localhost:27019'}]}
rs.initiate(config_rs)
rs.status()
3、增加仲裁服务器
mongod --dbpath D:\Database\MongoDB3\dbc3 --port 27020 --replSet neohope/localhost:27017,localhost:27018,localhost:27019
4、设置仲裁服务器
mongo --port 27017
neohope:PRIMARY> rs.addArb("localhost:27020");
neohope:PRIMARY> rs.status()
5、将备用节点设为被动模式
neohope:PRIMARY> r=rs.conf() neohope:PRIMARY> r.members[2].priority=0 neohope:PRIMARY> rs.reconfig(r) neohope:PRIMARY> rs.status()
MongoDB主从数据库(Shell)
1、主数据库
mongod --dbpath=D:\Database\MongoDB3\dbm --port=27017 --master
2、从数据库
mongod --dbpath=D:\Database\MongoDB3\dbs1\ --port=27018 --slave --source=localhost:27017
3、后期指定主数据库
mongod --dbpath=D:\Database\MongoDB3\dbs2\ --port=27019 --slave
mongo localhost:27019
use local
db.sources.insert({"host":"localhost:27017"})
db.sources.find()
MongoDB注册为服务(命令行)
1、安装为服务
mongod --dbpath=D:\Database\MongoDB3\db --logpath=D:\Database\MongoDB3\log\mongo.log --port 27027 --noauth --install -serviceName MongoDB01 --serviceDisplayName MongoDB01 net start MongoDB01 mongo 127.0.0.1:27027/test
2、安装为服务,并开启用户认证
mongo 127.0.0.1:27027/admin
db.createUser({"user":"neo","pwd":"neo","customData":{"hobby":"tuzi"},"roles":["readWrite", "dbAdmin"]})
net stop MongoDB01
mongod --dbpath=D:\Database\MongoDB3\db --logpath=D:\Database\MongoDB3\log\mongo.log --port 27027 --auth --reinstall -serviceName MongoDB01S --serviceDisplayName MongoDB01S
net start MongoDB01S
mongo 127.0.0.1:27027/test -u neo -p neo
MongoDB查询使用Codec的简单示例(java)
1、数据准备
db.person.insert({"name":"neo","age":"26","sex":"male"})
db.person.insert({"name":"joe","age":"28","sex":"male"})
2、使用Codec
class Person
{
public ObjectId _id;
public double Age;
public String Name;
public String Sex;
public Person(ObjectId _id, String Name, double Age, String Sex)
{
this._id=_id;
this.Name=Name;
this.Age=Age;
this.Sex=Sex;
}
}
class PersonCodec implements Codec<Person>
{
private final CodecRegistry codecRegistry;
public PersonCodec(final CodecRegistry codecRegistry) {
this.codecRegistry = codecRegistry;
}
@Override
public void encode(BsonWriter writer, Person t, EncoderContext ec) {
writer.writeStartDocument();
writer.writeName("_id");
writer.writeObjectId(t._id);
writer.writeName("name");
writer.writeString(t.Name);
writer.writeName("age");
writer.writeDouble(t.Age);
writer.writeName("sex");
writer.writeString(t.Sex);
writer.writeEndDocument();
}
@Override
public Class<Person> getEncoderClass() {
return Person.class;
}
@Override
public Person decode(BsonReader reader, DecoderContext dc)
{
reader.readStartDocument();
reader.readName();
ObjectId _id = reader.readObjectId();
reader.readName();
String name = reader.readString();
reader.readName();
double age = reader.readDouble();
reader.readName();
String sex =reader.readString();
reader.readEndDocument();
return new Person(_id,name,age,sex);
}
}
class PersonCodecProvider implements CodecProvider
{
@Override
public <T> Codec<T> get(Class<T> type, CodecRegistry cr)
{
if (type == Person.class)
{
return (Codec<T>) new PersonCodec(cr);
}
return null;
}
}
public class CodecTest
{
private static void testCodec()
{
String[] hosts = {"127.0.0.1"};
int port = 27017;
String user = null;
String password = null;
String database = "test";
CodecRegistry codecRegistry = CodecRegistries.fromRegistries(
CodecRegistries.fromProviders(new PersonCodecProvider()),
MongoClient.getDefaultCodecRegistry());
MongoClient mongoClient = getConnection(hosts,port,user,password,database,codecRegistry);
MongoDatabase db = mongoClient.getDatabase("test");
MongoCollection<Person> collection = db.getCollection("person",Person.class);
FindIterable<Person> iterable = collection.find();
MongoCursor<Person> cursor = iterable.iterator();
while (cursor.hasNext())
{
Person p = cursor.next();
System.out.println("personName: " + p.Name);
}
}
private static MongoClient getConnection(String[] hosts, int port, String user, String password, String database, CodecRegistry codecRegistry)
{
MongoClientOptions mongoClientOptions = new MongoClientOptions.Builder()
.connectionsPerHost(100)
.threadsAllowedToBlockForConnectionMultiplier(5)
.maxWaitTime(1000 * 60 * 2)
.connectTimeout(1000 * 10)
.socketTimeout(0)
.socketKeepAlive(false)
.readPreference(ReadPreference.primary())
.writeConcern(WriteConcern.ACKNOWLEDGED)
.codecRegistry(codecRegistry)
.build();
List<ServerAddress> mongoAddresses = new ArrayList<ServerAddress>();
for (String host : hosts) {
mongoAddresses.add(new ServerAddress(host, port));
}
List<MongoCredential> mongoCredentials = null;
if (user != null && !user.isEmpty() && password != null && !password.isEmpty()) {
mongoCredentials = new ArrayList<MongoCredential>();
mongoCredentials.add(MongoCredential.createMongoCRCredential(user, database, password.toCharArray()));
}
if(mongoCredentials==null)
{
return new MongoClient(mongoAddresses, mongoClientOptions);
}
else
{
return new MongoClient(mongoAddresses, mongoCredentials, mongoClientOptions);
}
}
}
MongoDB的MapReduce简单示例(java)
1、数据准备
db.sell.insert({"price":8.0,"amount":500.0,"status":"a"})
db.sell.insert({"price":8.0,"amount":450.0,"status":"a"})
db.sell.insert({"price":8.0,"amount":400.0,"status":"a"})
db.sell.insert({"price":9.0,"amount":350.0,"status":"a"})
db.sell.insert({"price":9.0,"amount":300.0,"status":"a"})
db.sell.insert({"price":9.0,"amount":250.0,"status":"a"})
db.sell.insert({"price":9.0,"amount":200.0,"status":"a"})
db.sell.insert({"price":10.0,"amount":150.0,"status":"d"})
db.sell.insert({"price":10.0,"amount":100.0,"status":"d"})
db.sell.insert({"price":10.0,"amount":50.0,"status":"d"})
db.sell.insert({"price":10.0,"amount":0.0,"status":"d"})
2、MapReduce
private static void testMapReduce3x()
{
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase db = mongoClient.getDatabase("test");
MongoCollection collection = db.getCollection("sell");
String map = "function(){emit(this.price,this.amount);}";
String reduce = "function(key, values){return Array.sum(values)}";
MapReduceIterable out = collection.mapReduce(map, reduce);
MongoCursor cursor = out.iterator();
while (cursor.hasNext())
{
System.out.println(cursor.next());
}
}
private static void testMapReduce2x()
{
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase db = mongoClient.getDatabase("test");
BasicDBObject query=new BasicDBObject("status","a");
DBCollection dbcollection = mongoClient.getDB("test").getCollection("sell");
String map = "function(){emit(this.price,this.amount);}";
String reduce = "function(key, values){return Array.sum(values)}";
MapReduceCommand cmd = new MapReduceCommand(dbcollection, map, reduce,
"outputCollection", MapReduceCommand.OutputType.INLINE, query);
MapReduceOutput out2 = dbcollection.mapReduce(cmd);
for (DBObject o : out2.results())
{
System.out.println(o.toString());
}
}
MongoDB入门之增删改查(Java)
测试代码,请重构
//枚举数据库
private static void listDB()
{
MongoClient mongoClient = new MongoClient("localhost", 27017);
for (String dbName : mongoClient.listDatabaseNames())
{
System.out.println("dbName: " + dbName);
}
}
//枚举collection
private static void listCollection()
{
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase db = mongoClient.getDatabase("test");
for (String collectionName : db.listCollectionNames())
{
System.out.println("collectionName: " + collectionName);
}
}
//查询全部数据
private static void testQueryAll()
{
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase db = mongoClient.getDatabase("test");
MongoCollection collection = db.getCollection("person");
BasicDBObject query = new BasicDBObject();
FindIterable iterable = collection.find(query);
MongoCursor cursor = iterable.iterator();
while (cursor.hasNext())
{
org.bson.Document person = (org.bson.Document)cursor.next();
System.out.println(person.get("name"));
System.out.println(person.toString());
}
cursor.close();
}
//按条件查询数据
private static void testQuery()
{
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase db = mongoClient.getDatabase("test");
MongoCollection collection = db.getCollection("person");
BasicDBObject query = new BasicDBObject("name","Joe");
FindIterable iterable = collection.find(query);
MongoCursor cursor = iterable.iterator();
while (cursor.hasNext())
{
org.bson.Document person = (org.bson.Document)cursor.next();
System.out.println(person.get("name"));
System.out.println(person.toString());
}
cursor.close();
}
//插入
private static void testInsert()
{
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase db = mongoClient.getDatabase("test");
MongoCollection collection = db.getCollection("person");
Document doc = new Document();
doc.put("name", "tuzi");
doc.put("age", 27);
doc.put("sex", "Female");
collection.insertOne(doc);
}
//删除
private static void testDelete() {
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase db = mongoClient.getDatabase("test");
MongoCollection collection = db.getCollection("person");
BasicDBObject query = new BasicDBObject("name", "tuziki");
collection.deleteMany(query);
}
//更新
private static void testUpdate() {
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase db = mongoClient.getDatabase("test");
MongoCollection collection = db.getCollection("person");
BasicDBObject query = new BasicDBObject("name", "tuzi");
BasicDBObject newDocument = new BasicDBObject();
newDocument.put("name", "tuziki");
BasicDBObject updateObj = new BasicDBObject();
updateObj.put("$set", newDocument);
collection.updateMany(query, updateObj);
}
MongoDB入门之增删改查(命令行)
1、首先要启动mongodb
set MANGO_HOME=C:\Database\MongoDB\Server\3.0 Set PATH=%MANGO_HOME%\bin;%PATH% mongod --dbpath=D:\Database\MongoDB3\db
2、然后启动mongo命令行
set MANGO_HOME=C:\Program Files\MongoDB\Server\3.0 Set PATH=%MANGO_HOME%\bin;%PATH% mongo
3、列出并选用db
show dbs use test show collections
4、插入数据,新建collection
db.person.insert({"name":"neo","age":"26","sex":"male"})
db.person.insert({"name":"joe","age":"28","sex":"male"})
5、查询
db.person.find()
db.person.find({"name":"joe"})
6、更新
db.person.update({"name":"joe"},{"name":"joe","age":"29","sex":"male"})
db.person.update({"name":"joe"},{$set:{"age":"28"}})
6、删除
db.person.remove({"name":"joe"})
db.person.remove({})
Oracle并发查询
1. 第一张表加并发
select /*+ PARALLEL(t1, 5) */count(*) from table1 t1, table2 t2 where t1.pk = t2.pk
2. 两张表都加并发
select /*+ PARALLEL(t1, 5) PARALLEL(t2, 5) */count(*) from table1 t1, table2 t2 where t1.pk = t2.pk
trunc函数示例
1、时间处理
select trunc(sysdate) from dual --2011-3-18 今天的日期为2011-3-18 select trunc(sysdate, 'mm') from dual --2011-3-1 返回当月第一天. select trunc(sysdate,'yy') from dual --2011-1-1 返回当年第一天 select trunc(sysdate,'dd') from dual --2011-3-18 返回当前年月日 select trunc(sysdate,'yyyy') from dual --2011-1-1 返回当年第一天 select trunc(sysdate,'d') from dual --2011-3-13 (星期天)返回当前星期的第一天 select trunc(sysdate, 'hh') from dual --2011-3-18 14:00:00 当前时间为14:41 select trunc(sysdate, 'mi') from dual --2011-3-18 14:41:00 TRUNC()函数没有秒的精确
2、数字处理
select trunc(123.458) from dual --123 select trunc(123.458,0) from dual --123 select trunc(123.458,1) from dual --123.4 select trunc(123.458,-1) from dual --120 select trunc(123.458,-4) from dual --0 select trunc(123.458,4) from dual --123.458 select trunc(123) from dual --123 select trunc(123,1) from dual --123 select trunc(123,-1) from dual --120