gpt4 book ai didi

MongoDB 条件投影

转载 作者:行者123 更新时间:2023-12-04 00:21:49 25 4
gpt4 key购买 nike

我想有条件地在回复中省略字段。

我有一个聚合查询,它使用 geoNear 来查找最近的 POI,如果查询点和 POI 之间的距离小于 500,我只想检索所有信息。

让我们假设如果距离小于或等于 500,我想省略“someField”。

这是我想出的:

db.pois.aggregate([
{
"$geoNear": {
"near": {
type: "Point",
coordinates: [49.607857, 6.129143]
},
"maxDistance": 0.5 * 1000,
"spherical": true,
"distanceField": "distance"
}
}, {
$project: {
_id:0,
"someField": {
$cond: [{$lte: ["$distance", 500]}, 1, 0 ]
}
}
}
]).pretty()

但是,该查询并没有将字段排除在响应之外,而是以某种方式将“距离”的值替换为 0 或 1。

我将不胜感激任何帮助。

最佳答案

Starting in MongoDB 3.6, you can use the variable REMOVE in aggregation expressions to conditionally suppress a field.



$$REMOVE

查询:
db.pois
.aggregate([
{
$geoNear: {
near: {
type: "Point",
coordinates: [49.607857, 6.129143]
},
maxDistance: 0.5 * 1000,
spherical: true,
distanceField: "distance"
}
},
{
$project: {
_id: 0,
someField: {
$cond: {
if: { $lte: ["$distance", 500] },
then: "$$REMOVE",
else: "$distance"
}
}
}
}
])
.pretty();

关于MongoDB 条件投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60041006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com