database - MongoDB 如何使 2 个嵌套文档具有相同的 _id?
问题描述
我目前在我的 mongodb 集合中有 2 个文档。他们是:
"_id": "5b6c7109c21dfe2a4b557b1e",
"title": "Childish Gambino",
"datetime": "2018-09-16T00:00:00.000Z",
"venue": {
"name": "Madison Square Garden",
"city": "New York",
"state": "NY"
"_id": "5b6c7109c21dfe2a4b557b1d",
}
和
"_id": "5b6c71133acdbe2a4e51615d",
"title": "The Eagles",
"datetime": "2018-09-12T00:00:00.000Z",
"venue": {
"name": "Madison Square Garden",
"city": "New York",
"state": "NY"
"_id": "5b6c71133acdbe2a4e51615c",
}
虽然这是两场不同的音乐会,但都在麦迪逊广场花园举行。但是,在 2 个文档中,麦迪逊广场花园有 2 个不同的“_id”属性。有没有一种方法可以使它们具有相同的 _id,或者每次添加在麦迪逊广场花园发生的文档时,我是否必须手动输入相同的 _id?手动输入 _id 通常被认为是一种好的做法吗?对 mongodb 来说是新手,因此我们将不胜感激。谢谢!
解决方案
如果您使用 MongoDB 3.4 及更高版本,您可以使用$lookup
这意味着在您的模式中您可以将 a 添加reference
到实际Madison Square Garden
(我假设它位于另一个集合中)。这样你的数据可能看起来像这样:
"_id": ObjectId('5b6c71133acdbe2a4e51615d'),
"title": "The Eagles",
"datetime": "2018-09-12T00:00:00.000Z",
"venueId": ObjectId('5b6c71133acdbe2a4e51615c')
您将能够使用$lookup 功能交叉引用该场地。
注意:这绝不比嵌入数据更有效,但它为您提供了一个参考 _id。
推荐阅读
- javascript - 仅在打开时加载 Bootstrap 模态内容
- c# - 如何修复 ElasticSearch 索引中无意重复的值?
- javascript - 如果使用多个导入而不是一个命名导入,是否会产生性能成本
- android - 以编程方式将 boxBackgroundMode 设置为 TextInputLayout
- c# - 我想为我的网站上传个人资料,但 #FileUpload2 行中有错误
- excel - 寻找最后一行并让它填充另一列
- c# - 迭代数组并将强类型添加到列表
- reactjs - ReactJS Material-UI:theme.mixins.toolbar 偏移不适应时
用来 - c# - MVC,在哪里存储当前状态对象?
- sql - 有没有办法根据脚本运行的月份以可变顺序显示列?