系统在数据库中具有以下文档信息:
{
"systemName": "ABC",
"systemUsageAttrs" : [
{
"cpuUsage": 30,
"memUsage": 40,
"isActive": false
},
{
"cpuUsage": 88.2,
"memUsage": 33.5,
"isActive": false
},
{
"cpuUsage": 66.3,
"memUsage": 79.5,
"isActive": true
},
{
"cpuUsage": 80.5,
"memUsage": 63,
"isActive": true
}
]
}
我已经尝试了使用 mongo java 驱动程序进行重新设置,下面是以下代码片段:
List<Document> systemDetailsAL = sysUsageDetailsColl.aggregate(
asList(
match(eq("systemName","ABC")),
unwind("$systemUsageAttrs"),
match(eq("systemUsageAttrs.isAcive",true)),
group("$_id", Accumulators.push("systemName","$systemName"),
Accumulators.push("systemUsageAttrs", "$systemUsageAttrs")),
project(Projections.fields(Projections.excludeId(),
Projections.include("systemName", "systemUsageAttrs")))
)
).into(new ArrayList<Document>());
上面为我提供了带有两个元素的ArrayList的输出,第0个元素是带有键“systemName”的Document,值是带有两个元件的Array List。第1个位置元素与键为“systemUsageAttrs”的Document一起,值为ArrayList,包含两个元素,即所有系统使用详细信息。
尝试的另一件事是编译组部分是上面的代码,因此它为我提供了 2 个文档的列表
{
serverName: ABC,
systemUsageAttr: {
cpuUSage: xxx,
memUsage: yyy,
isActive:true
}}
和第二份文件
{
serverName: ABC,
systemUsageAttr: {
cpuUSage: ttt,
memUsage: sss,
isActive:true
}}
是否可以使用聚合返回一个只有 1 个元素的列表,例如它给出以下输出
{
serverName: ABC,
systemUsageAttr: [
{
cpuUSage: xxx,
memUsage: yyy,
isActive:true
},
{
cpuUSage: ttt,
memUsage: sss,
isActive:true
}
}
感谢任何帮助或指点。
改变这两个阶段:
group("$_id", Accumulators.push("systemName","$systemName"),
Accumulators.push("systemUsageAttrs", "$systemUsageAttrs")),
project(Projections.fields(Projections.excludeId(),
Projections.include("systemName", "systemUsageAttrs")))
)
如下,以获得期望的结果:
group("$_id", Accumulators.push("systemUsageAttrs", "$systemUsageAttrs"),
Accumulators.first("systemName", "$systemName")),
project(Projections.excludeId()))
请注意< code>Accumulators.first(第一个组聚合运算符)的用法。
多亏了这里的人的帮助,我成功地在我的文档中找到了两个ID,并在另一个集合中找到了他们的代表文档。我需要采取的下一步是进一步查找一个“嵌套”ID(引用另一个集合中的文档)。 其结果如下: 我希望chieftain部分是这样的(这就是没有添加'last'$lookup'的chieftain文档的样子):
` ` 我需要使用MongoDB shell命令查询此文档。 我已经尝试过查看$[]、$all和挖掘mongo文档,但似乎都没用。任何想法都是赞赏,谢谢!
我有一个名为results的集合,其中每个文档都有一个标记(唯一)和一个嵌入文档(服务)列表。 样本: 我想使用mongo模板(spring boot)提取一个基于令牌和服务id的服务。下面是一个代码片段: 服务级别: 上面的代码执行此查询: 方法返回空Service对象! 为了获得服务对象,我的聚合中是否有任何更改要做?
我需要更新Mongo DB中另一个文档内的数组中的一个文档
问题内容: 我如何在mongodb文档中嵌套文档的地方搜索文档。例如,我有一组私人消息。每条私人消息都有两个嵌套文档- 一个代表发送用户,另一个代表接收使用。两个嵌套文档的格式均为- userID:34343,名称:Joe Bloggs 我希望能够搜索用户发送的所有邮件(例如,搜索发件人用户的嵌套文档)。 我正在使用Java驱动程序。我是否需要创建一个代表嵌套文档的DBObject? 谢谢 问题答
我想在具有指定 URL 的相应文档中将嵌套的“已爬行”更新为 True。 我对mongodb相当陌生,我似乎无法弄清楚这一点,非常感谢任何帮助。