[英]Check if two property of a nested document are equal in mongodb
我有一个这样的user.expenses
集合
{
userId: ObjectId("62f332b93753ac926ff6ac62"),
expenses: [
{
name: 'electricity',
assigned: 400,
given: 400,
},
{
name: 'restaurant',
assigned: 2100,
given: 0,
}
]
}
我会从请求中得到userId
和expenses.name
(电)。 我需要检查user.expenses
集合是否有任何名称为electricity
且assigned
不等于given
的expenses
文件。
我使用$elemMatch
并且可以检查是否有任何name
electricity
的嵌入式文档。
db.user.expenses.find({
userId: ObjectId('62f332b93753ac926ff6ac62'),
expenses: {
$elemMatch: {
name: 'electricity',
},
},
});
我也尝试使用$where
。 但它只能应用于顶级文档。
询问
$filter
来做electricity
和assigned!=given
electricity
,请保留该文档assigned!=given
aggregate(
[{"$match":
{"$expr":
{"$ne":
[{"$filter":
{"input": "$expenses",
"cond":
{"$and":
[{"$eq": ["$$this.name", "electricity"]},
{"$ne": ["$$this.assigned", "$$this.given"]}]}}}, []]}}}])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.