【发布时间】:2016-12-01 09:18:19
【问题描述】:
我正在寻找有关联接的一些信息以及它们在MongoDB 中的行为方式。虽然我很欣赏 NoSQL 数据库背后的强大功能是将所有信息存储在文档中,并且该文档包含尽可能多的信息,这样您就不必进行多次查询
不过,我也明白在某些情况下,您可能希望最大限度地减少数据重复,从而最大限度地降低一致性问题的风险。
使用文档引用时,有什么方法可以返回单个文档吗?我尝试了$lookup 函数,虽然它确实返回了正确的结果,但它为每个数组条目返回一个文档。
假设如下结构:
客户:
{
_id: ObjectId("578d706916f07969c4b0cad1"),
name: "fred",
orders: [ObjectId("578d706916f07969c4b0cad2"),ObjectId("578d706916f07969c4b0cad3")]
}
订单:
{
_id: ObjectId("578d706916f07969c4b0cad2"),
date: xxxx,
items: [a,b,c,d]
},
{
_id: ObjectId("578d706916f07969c4b0cad2"),
date: xxxx,
items: [x,y,z]
}
使用查找,我可以获得 2 个文档的结果,每个订单一个附加了客户数据,但是我正在寻找一个带有数组或订单信息的文档 - embedded document。即以下结构
{
_id: ObjectId("578d706916f07969c4b0cad1"),
name: "fred",
orders: [
{
_id: ObjectId("578d706916f07969c4b0cad2"),
date: xxxx,
items: [a,b,c,d]
},
{
_id: ObjectId("578d706916f07969c4b0cad2"),
date: xxxx,
items: [x,y,z]
}]
}
这在MongoDB 内可能吗?或者join 进程是否与 SQL 数据库非常匹配,以至于您在尝试连接数据时总是会返回重复的客户信息?我知道数据可以在node 等应用程序中转换为单个文档,但是从编写查询的方式来看,是否可以将其返回预格式化?
【问题讨论】:
标签: mongodb nosql aggregation-framework