mongodb - 将数据存储为地图而不是数组以用于 embedMany 关系
问题描述
通过在 laravel 中运行这些命令:
$model = new Accommodation();
$model->fill(['name'=>'taghi']);
$model->save();
$model->room_types()->create(['name'=>'room 1','id'=>'room_1']);
$model->room_types()->create(['name'=>'room 2','id'=>'room_2']);
这是 MongoDB 中的结果:
{
"_id" : ObjectId("5c8fafa4d82c24311f440482"),
"@attributes": {
"name": "hotel Esteghlal",
"address": "tehran"
},
"updated_at" : ISODate("2019-03-18T14:48:04.000Z"),
"created_at" : ISODate("2019-03-18T14:48:04.000Z"),
"room_types" : [
{
"name" : "room 1",
"_id" : ObjectId("5c8fafa4d82c24311f440483"),
},
{
"name" : "room 2",
"_id" : ObjectId("5c8fafa4d82c24311f440484")
}
]
}
it is my expected document in mongo db:
{
"_id" : ObjectId("5c8fafa4d82c24311f440482"),
"@attributes": {
"name": "hotel Esteghlal",
"address": "tehran"
},
"room_types": {
"room_1":{
"_id" : ObjectId("5c8fafa4d82c24311f440483",
"name":"room 1"
},
"room_2": {
"name":"room 2",
"_id" : ObjectId("5c8fafa4d82c24311f440484")
}
}
}
问题的总结是,是否可以通过 laravel ORM 以使用子文档的自然 id 作为它们的键而不是将它们存储为数组的方式创建一个嵌入式对象?
解决方案
推荐阅读
- typescript - 如何使用 Typescript 编译器 API 打印机在节点之间生成额外的换行符
- sql - Hive 拆分和总计
- binary - CUDD:对 BDD 的操作
- reactjs - Redux 组件被错误地渲染/调用多次?
- javascript - 使用 URL 参数定位节点服务器中的特定功能
- excel - 仅通过输入日期 (jj) 填写日期 (jj/mm/yyyy)
- jquery - JQuery保留从dom中删除元素的数据
- php - 我应该在发送 html 电子邮件时链接到图像还是使用`AddEmbeddedImage`?
- google-apps-script - 将单元格中的日期与日期范围进行比较
- vhdl - Kintex7 FPGA 上输入时钟的最佳路径