我是MongoDB的新手。假设我有一个集合中的文档:
[
{
_id: ObjectId("1"),
uid: "test",
obj: Object
name: "a",
field1: "..."
},
{
_id: ObjectId("2"),
uid: "test",
obj: Object
name: "a",
field1: "..."
},
{
_id: ObjectId("3"),
uid: "test",
obj: Object
name: "b",
field1: "..."
},
{
_id: ObjectId("4"),
uid: "test2",
obj: Object
name: "b",
field1: "..."
}
]
我想检索具有唯一obj.name的obj列表,预期输出为:
[
{
_id: ObjectId("2") // not really necessary , just to show that the obj was under ObjectId("2")
name: "a",
field1: "..."
},
{
_id: ObjectId("3") // not really necessary , just to show that the obj was under ObjectId("3")
name: "b",
field1: "..."
}
]
我想做到这一点:
>
按对象.名称分组
[{$match:{uid:“test”}},{$sort:{_id:-1}},{$group:{_id:“$obj.name”}}]
我得到的是:
{
_id:"a"
},
{
_id:"b"
}
第二个问题:如何用spring boot mongo模板或其他spring boot mongo库进行这样的查询?
Public class A {
private String _id;
private String uid;
private Obj obj;
}
Public class Obj {
private String name;
private String field1;
}
在Java意义上,我想检索列表
但不知道怎么做。
非常感谢你的帮助。
这很简单。按照教程操作。
添加以下代码:
//Add this code to your service class
@Autowired
private MongoTemplate mongoTemplate;
...
//Aggregation pipeline
Aggregation agg = Aggregation.newAggregation(
Aggregation.match(Criteria.where("uid").is("test")),
Aggregation.sort(Direction.DESC, "_id"),
Aggregation.group("obj.name").first("obj").as("obj"),
Aggregation.replaceRoot("obj")
);
AggregationResults<Obj> result = mongoTemplate.aggregate(agg, "collection", Obj.class).getMappedResults();
//result.forEach(System.out::println);
我记录一个设备,每15分钟读取3个值(,,)。它们可以重复。 我需要找出每小时在该间隔内读取的12个值中最大的3个值是什么。我对它们何时发生不感兴趣,只对它们的值感兴趣。 目前,我的算法还远远不够高效和快速: 在每组中循环: 我想去掉这个循环,使用原生的pandas/numpy方法。可能吗? 编辑:在这篇文章的末尾提出了一个可行的解决方案 以下是代码: 回报: 解决方案 我在代码中实现这个解决方案
问题内容: 我在MongoDB中有一个文档,其中一个看起来像这样: 在每个文档中,我需要找到最小的项目并将其删除。所以应该是这样的: 看起来应该在这里使用函数,但是我不能再说了。 如何找到数组中的最小元素并将其删除? 我正在使用MongoDB和Pymongo驱动程序。 问题答案: 如果您不限于一步就完成查询,则可以尝试: 步骤1)将聚合函数与$ unwind和$ group运算符配合使用,以查找每
问题内容: 对于我的示例,拥有汽车对象,并根据模型(分组依据)发现了最小和最大价格值。 但是我找不到哪个汽车对象具有最高和最低价格。我怎样才能做到这一点? 问题答案: 如果您只对每个组感兴趣,则可以使用,例如 但是,由于您想要最昂贵和最便宜的产品,因此需要以下内容: 由于没有与之等效的通用统计对象,因此该解决方案带来了一些不便。如果这种情况不止一次发生,那么值得用这样的类填补空白: 将其添加到您的
问题内容: 我有这张表 language_id是指记录所用的语言。我想做的是检索 每个language_id中 最近的五个记录(ORDER BY time_posted DESC LIMIT 5)的列表。我可以使用许多不同的SQL查询在PHP中循环执行此操作,但我觉得有一种更简单的方法。 我必须得到一本有关SQL的书,哈哈。 谢谢。 问题答案: 这是我在MySQL中解决此“每组前N个”类型的查询的
如何在Cloud Firestore中查询每个CollectionGroup的最新文档? 组中每个收藏中只有一个文档,最近的!
我收集了一些作者的文章。每个作者都有一个独特的签名或链接,出现在他们所有的文本中。 Author1的示例: Author1的预期输出为: Author2的示例: Author2的预期输出为: 请特别注意,没有可靠的识别字符(或位置)表示签名的开始或结束。它可以是一个url,一个Twitter地址,任何类型的纯文本,等等,任何长度,包含字符串开头、结尾或中间出现的任何字符序列。 我正在寻找一种方法,