C# 加入Mongo DB?
对于酒店预订网站,在SQL中-假设我有两个表 预订 BookingId 起始日期 结束日期 成本 霍特利德酒店(fk)C# 加入Mongo DB?,c#,sql,node.js,mongodb,nosql,C#,Sql,Node.js,Mongodb,Nosql,对于酒店预订网站,在SQL中-假设我有两个表 预订 BookingId 起始日期 结束日期 成本 霍特利德酒店(fk) 当你询问预订时,你应该考虑从酒店集合中需要哪些信息。 在SQL中,通常的做法是规范化数据,例如酒店名称,以便只存储一次,然后在相关表中存储引用ID,并使用联接检索该数据,例如在查找预订时 在NoSQL中,一种常见的做法是对数据进行部分反规范化,以最小化查询数量 例如,当您查询预订时,您真的需要每次预订和每个酒店的所有详细信息吗?或者,您是否只需要足够的信息来显示列表/概述,并仅
当你询问预订时,你应该考虑从酒店集合中需要哪些信息。 在SQL中,通常的做法是规范化数据,例如酒店名称,以便只存储一次,然后在相关表中存储引用ID,并使用联接检索该数据,例如在查找预订时 在NoSQL中,一种常见的做法是对数据进行部分反规范化,以最小化查询数量 例如,当您查询预订时,您真的需要每次预订和每个酒店的所有详细信息吗?或者,您是否只需要足够的信息来显示列表/概述,并仅在用户单击预订时检索其他详细信息 如果您确实需要立即获取所有数据,则需要在以下两个方面进行选择:
- 将酒店的id存储在预订中。查询时,请使用$lookup检索酒店数据
- 将所有酒店数据嵌入预订列表中。当任何酒店数据发生更改时,也会更新所有未结预订
对于特定情况,哪种方法最适合将在很大程度上取决于界面设计。您可以在mongodb中使用
聚合
和查找
db.bookings.aggregate([{
$lookup:{
来自:“酒店”,
localField:“HotelId”,
外域:“HotelId”,
as:“酒店”
}
}])
这将为您提供嵌套在预订记录中的
hotel
对象。我会将它们分成两个单独的集合,因为每个酒店的预订数量可能会无限增长。如果出现这种情况,您将超过mongo中的16mb bsondocument限制。