Javascript 我可以在数据库中的类中筛选私有列表吗?
我是一个mongo新手,我想知道这是否可能,而不是重复整个列表 我有以下课程:Javascript 我可以在数据库中的类中筛选私有列表吗?,javascript,java,mongodb,datastore,morphia,Javascript,Java,Mongodb,Datastore,Morphia,我是一个mongo新手,我想知道这是否可能,而不是重复整个列表 我有以下课程: public class Person { private String name; private int age; private List<PersonHistory>; //getters and setters... } public Class PersonHistory { private long created; private long finished;
public class Person {
private String name;
private int age;
private List<PersonHistory>;
//getters and setters...
}
public Class PersonHistory {
private long created;
private long finished;
}
公共类人物{
私有字符串名称;
私人互联网;
私人名单;
//接球手和接球手。。。
}
公共课个人历史{
私人长期创造;
私人长时间完成;
}
基本上,Person类中的列表将跟踪该类何时被编辑,然后Person类被序列化并存储在mongo中。
然后,用户将要求提供具有给定日期(startDate、endDate)的列表
因此,一旦存储在mongo中,就可以通过mongo过滤列表,并给出日期,或者我是否必须获取列表,遍历列表,返回结果如果我正确理解您试图执行的操作,您可以使用投影进行此查询:
MongoCursor<Document> iterator = collection.find(new Document("name", "joe"))
.projection(Projections.elemMatch("history", new Document("created", 12345)))
.iterator();
while (iterator.hasNext()) {
Document found = iterator.next();
System.out.println(found);
}
MongoCursor迭代器=collection.find(新文档(“name”、“joe”))
.projection(projects.elemMatch(“历史”,新文档(“创建”,12345)))
.iterator();
while(iterator.hasNext()){
找到的文档=迭代器.next();
System.out.println(已找到);
}
您可以修改投影,以指定要包含的字段或使用更复杂的条件(例如,在此和大于之间的“已创建”和大于任何值的“已完成”)
投影的API文档在这里:投影的概述在这里:我们可以使用Mongo在java中提供的查询API来实现这一点。请使用汇总表参考以下内容<代码>AggregateIterable=db.getCollection(“餐厅”).aggregate(asList(新文档($match),新文档($borough”,“Queens”).append(“烹饪”,“巴西”)),新文档($group”,新文档(“$id”,“$address.zipcode”)。append(“count”,新文档($sum”,1“)代码>