db.events.insertMany([{
"_id" : ObjectId("5f6c5b0594911c0b7231643d"),
"title" : "Test Event",
"tags" : [
"5fd8cef2368c625a9d7516cb"
]
},
{
"_id" : ObjectId("5fb3896afc13ae2ed1000000"),
"title" : "Test Event 2",
"tags" : [
"5fd8cef2368c625a9d7516cb",
"5fd8cfb04a4a6063ab4ca4bf",
"5fd8cfb04a4a6063ab4ca4c0"
]
}
]);
db.tags.insertMany([{
"_id" : ObjectId("5fd8cef2368c625a9d7516cb"),
"name" : "Foo",
"createdAt" : ISODate("2020-12-15T14:57:54.096Z")
},
{
"_id" : ObjectId("5fd8cfb04a4a6063ab4ca4bf"),
"name" : "Bar",
"createdBy" : "embo@team-con.de",
"createdAt" : ISODate("2020-12-16T14:57:54.096Z")
},
{
"_id" : ObjectId("5fd8cfb04a4a6063ab4ca4c0"),
"name" : "Foobar",
"createdAt" : ISODate("2020-12-17T14:57:54.096Z")
}
]);
{
"_id" : ObjectId("5f6c5b0594911c0b7231643d"),
"title" : "Test Event",
"tags" : [{
"_id" : ObjectId("5fd8cef2368c625a9d7516cb"),
"name" : "Foo",
"createdAt" : ISODate("2020-12-15T14:57:54.096Z")
}]
},
{
"_id" : ObjectId("5fb3896afc13ae2ed1000000"),
"title" : "Test Event 2",
"tags" : [{
"_id" : ObjectId("5fd8cef2368c625a9d7516cb"),
"name" : "Foo"
},
{
"_id" : ObjectId("5fd8cfb04a4a6063ab4ca4bf"),
"name" : "Bar"
},
{
"_id" : ObjectId("5fd8cfb04a4a6063ab4ca4c0"),
"name" : "Foobar"
}]
}
婴儿步
我尝试使用聚合管道,并在最后一步中通过匹配和查找它们的内容来替换。我不太熟悉通过聚合管道解决这个问题。
db.getCollection('events').aggregate([
{ $match: { tags: { "$exists" : true } } },
{
$lookup:
{
from: "tags",
localField: "tags",
foreignField: "_id",
as: "taags"
}
},
])
您可以使用$toobjectid
运算符在$lookup
阶段之前将标记的id从string转换为objectId,
$addfields
添加新字段并更新/格式化现有字段$map
循环迭代标记
数组$toobjectid
将字符串objectId转换为objectId类型标记
放在中,作为$lookup
阶段
的
属性
// $match stage here
{
$addFields: {
tags: {
$map: {
input: "$tags",
in: { $toObjectId: "$$this" }
}
}
}
},
{
$lookup: {
from: "tags",
localField: "tags",
foreignField: "_id",
as: "tags"
}
}
操场
{ $out: "updated_events" }
我正在尝试使用Spring Data mongodb更新mongodb中嵌入文档中的数组字段。 我想在mongodb集合中更新/插入的文档结构如下所示。 可以有更多这样的文档基于每个类型的部门,如“销售”,“市场营销”等。 即使这样做有效,我也不确定在Spring Data MongoDB中实现相同的功能是否有类似的支持。 另外,我的另一个查询是,如果我想为多个部门添加/更新员工,比如“Accou
问题内容: 我正在使用MongoDB数据库,该数据库的收集模型包括 班级 , 学生 , 学科 和[学术] 表现 。以下是基于猫鼬的架构和模型: 该集合的文件是最复杂的地段; 示例文档为: 我能够使用以下代码检索现有的班级文档并将其添加到分数中: 但是,如何添加/更新/删除该特定学生的成绩?我需要能够通过以下方式与集合进行交互: 检索所有学生或特定学生的分数(检索数组中的特定元素) 为特定主题添加/
我有一个类似这样的mongoDocument结构,注释字段作为嵌入文档。 我想添加 “newField” : “something” 到 嵌入的注释字段中 “cid” : “17426944” : 在java驱动程序中,我尝试了: 这里的问题是: 示例文档: 我需要什么 : 请帮帮我,谢谢vijay
我有一个深度嵌套的文档结构,如下所示: 我正在尝试更新集合以插入新配置,如下所示: 我正在mongo(Python)中尝试类似的内容: 但是,我得到了“如果没有包含数组的相应查询字段,则无法应用位置运算符”错误。在mongo这样做的正确方式是什么?这是mongo v2。4.1.
我想在具有指定 URL 的相应文档中将嵌套的“已爬行”更新为 True。 我对mongodb相当陌生,我似乎无法弄清楚这一点,非常感谢任何帮助。
问题内容: 我的文档中具有以下结构: 我想更新 someField 和 someField2, 但仅更新数组中的一项,与 _arrayId 匹配的 项 (例如;并且仅针对此文档(例如)),而不更新其他项。 该 arrayIds 是不是唯一的,这就是为什么我需要它是针对特定文档的文档。如果要为数组中存在的每个文档更新该值,则可以使用,但这不是我想要的。 我试图在Java中完成此操作,但也可以使用命令