|
@RunWith(JUnit4.class)
public>static final Morphia morphia = new Morphia();static final Datastore datastore = morphia.createDatastore(new MongoClient(),"BookTest"); @Entity
static>@Idprivate ObjectId>private String name;//书名 private double price;//价格
@Reference
private Author author;
}
@Entity
static> @Id
private ObjectId> private String name;//作者名称
private String nationality;//国籍
}
public static void main(String[] args) {
Author author = new Author();
author.setName("大仲马");
author.setNationality("法国");
datastore.save(author);
Book book = new Book();
book.setAuthor(author);
datastore.save(book);
}
@Test
public void testQuery(){
Query<Book> query = datastore.createQuery(Book.class);
System.out.println(query.count());
List<Book> books = query.asList();
System.out.println(books.get(0).getAuthor().getName());
}
@Test
public void testUpdate(){
//注意根据ID查询不能传入String 必须是ObjectId
Query<Book> query = datastore.createQuery(Book.class).field("_id").equal(new ObjectId("58ae7f837dde423968454e62"));
// System.out.println(query.get().price);//直接获取结果集第一个
// datastore.get(Book.class,new ObjectId("58ae7f837dde423968454e62")).price //直接根据ID查询一个文档
UpdateOperations<Book> updateOperation = datastore.createUpdateOperations(Book.class).set("name","三个火枪手").set("price", 55);
datastore.updateFirst(query, updateOperation);//.更新第一个找到的
}
//聚合管道,投射
@Test
public void testAggregation(){
//把price 重命名为 name
AggregationPipeline aggregationPipeline = datastore.createAggregation(Book.class).project(Projection.projection("name","price"));
Iterator<Book> books = aggregationPipeline.aggregate(Book.class);
System.out.println(books.next().getName());//打印出name : 60.0
}
} |
|
|