我正在尝试在Mongodb中进行复杂的查询,但是不知道如何应用这些复杂的条件。
我要查询至少两个事件类型为“ sale”的交易,然后可以获得交易列表作为返回值。
但是,如果我用db.trans.find({ "events.type": "sale" })
查询,即使event.type为sale的任何给定数量(1〜inf),我也将获得交易。但是我真正想要的是至少有两个事件的返回值包含“ sale”。
总共有2个集合,一个是事务,另一个是事件,每个事务对应一个或多个事件。
示例文档(交易)如下所示:
{
trans_id: "1234567",
events: [ event, event... ] // for each event contains event_id and type
}
事件对象如下:
{
event_id: "123456",
type: "sale" // "checkout", "cancel", etc
}
预期:交易清单中至少包含两个事件,属性为“ sale”。
编辑:感谢@ It'sNotMe,两个集合之间的关系被规范化,像SQL一样模拟该关系。我已经在上面的文档中添加了注释,希望它更易于阅读。