【发布时间】:2019-09-18 13:06:37
【问题描述】:
我有包含以下数据的 mongodb 文档:
amenities[
{
amenity_id:52,
Amenity:"AC"
},
{
amenity_id:23,
Amenity:"Free Parking"
}
]
我想将数组的每个amenity_id 元素与特定值匹配,并使用条件$cond 返回真或假。我用过
"$project":{'Free Parking':{'$cond':{'if':{'$in':['amenities.amenityId',[23]]},'then':'True','else':'False'}}
如果文档包含amenity_id= 52,则查询必须返回 False。
无论menityId如何,它都返回错误。可以列出设施 ID,因此使用$in。我如何测试每个元素?
【问题讨论】:
-
我能够通过在一个阶段收集所有 id 并将值与下一阶段的列表进行比较来解决这个问题
-
您是否在查询符合条件的文档?还是做别的事?您可以使用 $all 在数组中找到满足多个条件的文档。
-
为什么你在一个地方有
_id,然后在你的代码中测试amenityId? -
我的错。我现在更新了问题。
-
你在一个地方还有
amenityId,在另一个地方还有amenity_id。我想知道这是否是您问题的核心,但如果它有效,我猜它在您的代码中是正确的,只是在示例代码或文档中不正确。
标签: mongodb mongodb-query pymongo