我如何可以查询MongoDB的比较对象的数组?
我设计一个消息传递功能。我有一个用户收藏它包含的东西像ID,名字和姓氏。我也有一个消息集合包含如作者ID,邮件正文等的值的数组最后我有一个交谈集合具有ID和参与者,这是用户ID的数组。
我想这可能不是一个很好的结构,因为我希望能够运行,返回的所有用户(ID,姓氏和名字),一个用户拥有消息历史记录与查询。事情是这样的,我似乎无法运行查询将返回我需要的所有信息。我是否需要重组,或者是有没有办法运行此查询?
下面是结构的一个例子:
Conversation:
{ id: 123
participants: ['<user ID here>', '<user ID here>'],
}
User:{
id:654,
firstName: John
lastName: Doe
Message:
{ sender: 'john',
content: 'howdy',
time_created: new Date(),
converstationId: 123
},
{ sender: 'marry',
content: 'good u',
time_created: new Date(),
converstationId: 123
},
我尝试以下的一些变化,但我从来没有得到任何东西,但一个空数组回:
db.Users.aggregate([
{
$unwind: "$participants"
},
{
$lookup:
{
from: "conversations",
localField: "participants",
foreignField: "_id",
as: "response"
}
},
{
$match: { "response": { $ne: [] } }
}
])
所以我的问题是:我怎样才能得到所有参与者阵列中的相关用户ID的用户?
回答如下:你的问题是有点模糊,但我假设你正在寻找的lookup操作。 MongoDB的查找操作类似于SQL连接功能。
我如何可以查询MongoDB的比较对象的数组?
我设计一个消息传递功能。我有一个用户收藏它包含的东西像ID,名字和姓氏。我也有一个消息集合包含如作者ID,邮件正文等的值的数组最后我有一个交谈集合具有ID和参与者,这是用户ID的数组。
我想这可能不是一个很好的结构,因为我希望能够运行,返回的所有用户(ID,姓氏和名字),一个用户拥有消息历史记录与查询。事情是这样的,我似乎无法运行查询将返回我需要的所有信息。我是否需要重组,或者是有没有办法运行此查询?
下面是结构的一个例子:
Conversation:
{ id: 123
participants: ['<user ID here>', '<user ID here>'],
}
User:{
id:654,
firstName: John
lastName: Doe
Message:
{ sender: 'john',
content: 'howdy',
time_created: new Date(),
converstationId: 123
},
{ sender: 'marry',
content: 'good u',
time_created: new Date(),
converstationId: 123
},
我尝试以下的一些变化,但我从来没有得到任何东西,但一个空数组回:
db.Users.aggregate([
{
$unwind: "$participants"
},
{
$lookup:
{
from: "conversations",
localField: "participants",
foreignField: "_id",
as: "response"
}
},
{
$match: { "response": { $ne: [] } }
}
])
所以我的问题是:我怎样才能得到所有参与者阵列中的相关用户ID的用户?
回答如下:你的问题是有点模糊,但我假设你正在寻找的lookup操作。 MongoDB的查找操作类似于SQL连接功能。