0
想要使用Mongoose Model.findOneAndUpdate()仅在数组中的每个子文档都具有特定字段和值时才能找到文档。如果数组中的每个子文档都具有特定字段和值,则Mongoose返回文档
在下面的示例1中,我想对查找查询进行构建,以便它检查数组中每个子文档的日期是:“星期一”和计数:0.该查询将匹配文档并使其可用于更新。
但是相同的查询不能用于例子2,因为子文档groupB的日期是:'Tuesday',所以没有文档将被返回进行更新。
Example 1 -->
{
count: 0;
groupOffDays: [
{
group: A,
day: 'Monday'
},
{
group: B,
day: 'Monday'
},
{
group: C,
day: 'Monday'
},
]
}
Example 2 -->
{
count: 0;
groupOffDays: [
{
group: A,
day: 'Monday'
},
{
group: B,
day: 'Tuesday' <--match fails as sub doc does not have a value of Monday
},
{
group: C,
day: 'Monday'
},
]
}
发表您的查询,你已经尝试 –
最早是给它在蒙戈外壳一试(前猫鼬尝试它),看我怎么能找到与过滤器的应用对象 - >'代码db.mycoll .find({groupOffDays:{$ all:[{“$ elemMatch”:{day:“Monday”}}]}})'即使数组中的一个元素符合条件,也会返回对象,正在寻找一种方法请不要重复示例2的文档。 –
如果您可以将结构调整为关键值对,则可以轻松完成。类似于'groupOffDays':{group:'A',day:'Monday'} ]',您可以使用聚合。让我知道你的想法。 – Veeram