我如何编写mongodb查询,其中包括诸如“一个子文档中的任何一个与另一个子文档中的任何一个匹配?”之类的条件?
例如,假设我具有这样的结构:
{
personNumber: 3,
dataSet1:
[
{ date: new Date(2018,4,1), // ... }
{ date: new Date(2018,5,1), // ... }
],
dataSet2:
[
{ fromDate: new Date(2018,3,1), toDate: new Date(2018,5,1), //... }
{ fromDate: new Date(2018,7,1), toDate: new Date(2018,7,2), //... }
]
}
我如何执行查询:
根据我发现的一些信息,我尝试了此操作:
db.test.find(
{
$expr:
{
$and:
[
{ $gt: [ "$dataSet1.date", "$dataSet2.fromDate" ] },
{ $lt: [ "$dataSet1.date", "$dataSet2.toDate" ] }
]
}
}
);
但这似乎总是返回0个结果。如果删除,我会得到一些东西:
db.test.find(
{
$expr:
{
$gt: [ "$dataSet1.date", "$dataSet2.fromDate" ]
}
}
);
这让我怀疑and的格式错误,或者我需要以某种方式使用elemMatch。
但是后来我仍然不知道该怎么做第二部分-没有比赛。在mongodb中是否有很好的方法进行这类查询?