【发布时间】:2021-12-13 05:31:36
【问题描述】:
在运行 mongoDB 查找查询时,在某些特殊情况下,我想返回另一个字段的值,但不更新原始字段。
一位客户正在寻找特定价格范围内的顾问。一些辅导员正在做面对面的咨询,其他的只是虚拟的。一些辅导员有固定价格(字段:price),另一些辅导员有不同的面对面和虚拟辅导价格(字段:in_person_price、virtual_price)。在这种情况下,他们的“价格”字段设置为 0,这将使查询选择另一个要显示的字段。
会有一个外部变量“in_person”是真还是假,它决定了客户在搜索时看到的价格。
因此,例如,如果辅导员的“价格”为 0,则“in_person_price”为 145,“virtual_price”为 90...
如果 "in_person" 变量被标记为 true,则 mongoDB 查询返回的 "price" 将为 145
如果 "in_person" 变量被标记为 false,mongoDB 查询返回的 "price" 将为 90
下面是伪代码查询:
db.counselors.find({价格: //如果“price”字段为0... {如果“in_person”为真,返回in_person_price,否则返回virtual_price } else return price })
那么我该如何将这个想法转化为一个可行的 mongoDB 查询呢?
【问题讨论】:
-
您能否使用真实的 JSON 文档重写问题,以及这些案例的预期输出?检查聚合和
$cond它可能会帮助你 -
请修剪您的代码,以便更容易找到您的问题。请按照以下指南创建minimal reproducible example。
标签: mongodb mongodb-query conditional-operator