mongodb java数组_MongoDB 基础java数据类型

mongodb的java数据类型有

Object Ids 自动ID

Regular Expressions 正则表达式搜索记录

Dates/Times 时间

Database References 数据基础结构

Binary Data 二进制流

Timestamp Data 时间标记戳

Code Data 代码数据

Embedded Documents 嵌入式文档

Arrays 数组类型

详细参考原来英文 http://www.mongodb.org/display/DOCS/Java+Types

以下测试基础的mongodb数据类型。

package com.javaer.mongo;

import java.net.UnknownHostException;

import java.util.ArrayList;

import java.util.Date;

import java.util.regex.Pattern;

import org.bson.types.ObjectId;

import com.mongodb.BasicDBObject;

import com.mongodb.BasicDBObjectBuilder;

import com.mongodb.DB;

import com.mongodb.DBCollection;

import com.mongodb.DBCursor;

import com.mongodb.DBObject;

import com.mongodb.DBRef;

import com.mongodb.Mongo;

public class JavaTypes {

/**

* @param args

* @throws UnknownHostException

*/

public static void main(String[] args) throws UnknownHostException {

//基础ID,自动增加 结构类似503991d90364b431cdc798e2

ObjectId id = new ObjectId();

System.out.println(id);

id = new ObjectId();

System.out.println(id);

//5039924c0364f4a124555e42

// 5039924c0364f4a124555e43 连续使用,自动增加,否则随机生成

Mongo m = new Mongo();

DB db = m.getDB("yuexiaosheng");

DBCollection coll = db.getCollection("mycollection");

//使用标准库的正则表达式,可以搜索数据里记录。类似mysql中条件 where title like '%name%'

Pattern john = Pattern.compile(".*?jack*.?",Pattern.CASE_INSENSITIVE);

BasicDBObject query = new BasicDBObject("title", john);

DBCursor cursor = coll.find(query);

try {

while(cursor.hasNext()) {

System.out.println(cursor.next());

}

} finally {

cursor.close();

}

//mongodb中的时间类型

Date now = new Date();

BasicDBObject time = new BasicDBObject("ts", now);

coll.save(time);

//插入的记录 { "_id" : ObjectId("503993b20364129f6625d349"), "ts" : ISODate("2012-08-26T03:10:42.146Z") }

//mongodb中的数组结构。

ArrayList x = new ArrayList();

x.add(1);

x.add(2);

x.add(new BasicDBObject("foo", "bar"));

x.add(4);

BasicDBObject doc = new BasicDBObject("x", x);

coll.save(doc);

//插入的记录 { "_id" : ObjectId("503994500364bf9957b271a6"), "x" : [ 1, 2, { "foo" : "bar" }, 4 ] }

//存储mongodb的数据结构数据到数据库里

DBRef addressRef = new DBRef(db, "foo.bar", id);

DBObject address = addressRef.fetch();

DBObject person = BasicDBObjectBuilder.start()

.add("name", "Fred")

.add("address", addressRef)

.get();

coll.save(person);

//插入的数据记录

//{ "_id" : ObjectId("503995390364fcf1b54905b2"), "name" : "Fred", "address" : { "$ref" : "foo.bar", "$id" : ObjectId("503995390364fcf1b54905af") } }

DBObject fred = coll.findOne();

DBRef addressObj = (DBRef)fred.get("address");

System.out.println(addressObj);

// { "$ref" : "foo.bar", "$id" : "5039965c03648efcd6281311

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoDB支持拆库分表,可以通过sharding方式进行实现。下面是一个简单的MongoDB拆库分表脚本,以Java语言为例: 1. 首先创建一个MongoDB集群,包括3个配置服务器、3个路由服务器和至少2个数据分片服务器。 2. 在Java代码中,使用MongoClient连接到MongoDB集群: ``` MongoClient mongoClient = new MongoClient("mongodb://router1:27017,router2:27017,router3:27017"); ``` 3. 创建一个ShardingClient对象,用于管理MongoDB的sharding: ``` ShardingClient shardingClient = ShardingClientFactory.createShardingClient(mongoClient); ``` 4. 创建一个DatabaseShardingStrategy对象,用于对数据库进行sharding: ``` DatabaseShardingStrategy databaseShardingStrategy = new DatabaseShardingStrategy("db", new ModShardingAlgorithm()); ``` 其中,"db"为需要进行sharding的数据库名称,ModShardingAlgorithm是一个自定义的分片算法。 5. 创建一个TableShardingStrategy对象,用于对表进行sharding: ``` TableShardingStrategy tableShardingStrategy = new TableShardingStrategy("table", new RangeShardingAlgorithm()); ``` 其中,"table"为需要进行sharding的表名称,RangeShardingAlgorithm是另一个自定义的分片算法。 6. 将DatabaseShardingStrategy和TableShardingStrategy对象添加到ShardingClient中: ``` shardingClient.addDatabaseShardingStrategy(databaseShardingStrategy); shardingClient.addTableShardingStrategy(tableShardingStrategy); ``` 7. 完成以上步骤后,MongoDB集群就可以进行拆库分表的操作了。例如,可以使用如下语句向分片集合中插入数据: ``` DB db = mongoClient.getDB("db"); DBCollection collection = db.getCollection("table"); DBObject obj = new BasicDBObject(); obj.put("key", "value"); collection.insert(obj); ``` 以上是一个简单的MongoDB拆库分表脚本,供参考。具体实现需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值