设为首页 加入收藏

TOP

NoSQL 之 Morphia 操作 MongoDB (九)
2014-11-24 07:39:20 来源: 作者: 【 】 浏览:17
Tags:NoSQL Morphia 操作 MongoDB
createDate 2012-2-16 下午10:40:10
*/
@Test
public void testQuery() {
// 查询所有
print("query: " + ds.createQuery(User.class).asList());
// 查询主键
print("query key: " + ds.createQuery(User.class).asKeyList());
// 结果集数量
print("query: " + ds.createQuery(User.class).countAll());
// 抓取查询所有记录
Iterable it = ds.createQuery(User.class).fetch();
while(it.iterator().hasNext()) {
print("fetch: " + it.iterator().next());
}

// null
it = ds.createQuery(User.class).fetchEmptyEntities();
while(it.iterator().hasNext()) {
print("fetchEmptyEntities: " + it.iterator().next());
}

// all key
Iterable> itkeys = ds.createQuery(User.class).fetchKeys();
while(itkeys.iterator().hasNext()) {
print("fetchKeys: " + itkeys.iterator().next());
}

// age > 24
print("query: " + ds.createQuery(User.class).filter("age > ", 24).asList());
// age in (20, 28)
print("query: " + ds.createQuery(User.class).filter("age in ", newint[] { 20, 28 }).asList());

// limit 3
print("query: " + ds.createQuery(User.class).limit(3).asList());
// 分页类似MySQL
print("query: " + ds.createQuery(User.class).offset(11).limit(5).asList());
// order排序,默认asc
print("query: " + ds.createQuery(User.class).order("age").asList());
//desc
print("query: " + ds.createQuery(User.class).order("-age").asList());
// 组合排序order by age, name
print("query: " + ds.createQuery(User.class).order("age, name").asList());

print("query: " + ds.createQuery(User.class).queryNonPrimary().asList());
print("query: " + ds.createQuery(User.class).queryPrimaryOnly().asList());
//如果include 为true就表示取该属性的值,其他的默认null,反之为false则该属性为null,取其他的值
print("query: " + ds.createQuery(User.class).retrievedFields(false, "age").asList());
}

5、get和count查询

/**
* function: get查询
* @author hoojo
* @createDate 2012-2-16 下午10:39:09
*/
@Test
public void testGet() {
User user = new User();
user.setId(1306916670518L);
print("get: " + ds.get(user));
List ids = new ArrayList();
ids.add(1306907246519L);
ids.add(1306916670524L);
// 通过id集合查询相当于in ()
print("get: " + ds.get(User.class, ids).asList());
// id查询
print("get: " + ds.get(User.class, 1306916670524L));
}

/**
* function: count查询
* @author hoojo
* @createDate 2012-2-16 下午10:38:02
*/
@Test
public void testGetCount() {
User user = new User();
user.setId(1306916670518L);
print("getCount: " + ds.getCount(user));
print("getCount: " + ds.getCount(User.class));

List ids = new ArrayList();
ids.add(1306907246519L);
ids.add(1306916670524L);
print("getCount: " + ds.getCount(ds.get(User.class, ids)));

// age > 22的记录
print("getCount: " + ds.getCount(ds.createQuery(User.class).filter("age > ", 22)));
// 所有
print("countAll: " + ds.get(User.class, ids).countAll());
print("countAll: " + ds.find(User.class).countAll());
}

6、 其他操作

@Test
public void testOthers() {
query();
/** 索引*/
ds.ensureIndexes();
// 同时用annotation也可以给指定的属性建立索引
// 只需用在JavaEntity建立索引的属性上添加annotation
/*@Indexed(value = IndexDirection.ASC, name = "address_index")
String address;
// 建立唯一索引
@Indexed(val
首页 上一页 6 7 8 9 下一页 尾页 9/9/9
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇NOSQL们背后的共有原则 下一篇NoSQL的特点

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·HyperText Transfer (2025-12-26 07:20:48)
·半小时搞懂 HTTP、HT (2025-12-26 07:20:42)
·CPython是什么?PyPy (2025-12-26 06:50:09)
·Python|如何安装seab (2025-12-26 06:50:06)
·python要学习数据分 (2025-12-26 06:50:03)