从 mongoose find() 查询中提取一个值
Posted
技术标签:
【中文标题】从 mongoose find() 查询中提取一个值【英文标题】:Extract a value out of mongoose find() query 【发布时间】:2018-12-22 13:57:10 【问题描述】:在 find ("-_id services.location") 的 mongoose 查询中,stringifying 的输出是:
[
"services":[
"location":[
17.4374614,
78.7482878
]
,
"location":[
17.4020637,
78.18400519324596
]
,
"location":[
17.56208737,
78.284005186526
]
,
"location":[
17.5620637,
78.3240051999554
]
]
]
有什么方法可以让我从我得到的输出中访问每个单独的位置值,例如(17.4374614、78.7482878、17.4020637....)。
我的架构如下:-
var serviceSchema = new mongoose.Schema(
location:[type: Number]
)
【问题讨论】:
在下面查看我的答案,也试试我分享的链接。 【参考方案1】:您正在寻找的是 $reduce
和 $concatArrays
运算符。
[
"$project":
"result":
"$reduce":
"input": "$services.location",
"initialValue": [],
"in":
"$concatArrays": [
"$$this",
"$$value"
]
]
See demo
【讨论】:
感谢您的解决方法。有没有办法只将没有 _id 的结果值数组呈现到模板中。我只需要渲染结果数组的值 很好的答案@styvane!为你+1!! @Drunken Lord 检查此链接我已更新他的查询以满足您的要求:mongoplayground.net/p/EKm7PBH7NTy【参考方案2】:更新了答案:
有没有办法只渲染没有 _id 的 loc 值数组 进入模板。我只需要渲染 loc 数组的值
您可以这样做:https://mongoplayground.net/p/VhrZKxg6OC1
db.collection.aggregate([
$unwind: "$services"
,
$unwind: "$services.location"
,
$project:
"_id": "$_id",
"location": "$services.location"
,
$group:
_id: "_id",
loc:
$push: "$location"
,
$project:
"_id": 0,
"locationArray": "$loc"
])
这将导致:
[
"locationArray": [
17.4374614,
78.7482878,
17.4020637,
78.18400519324597,
17.56208737,
78.284005186526,
17.5620637,
78.3240051999554
]
]
希望它能解决您的问题。
【讨论】:
感谢您的解决方法。有没有办法只将没有 _id 的 loc 值数组呈现到模板中。我只需要渲染 loc 数组的值。 只需添加一个带有 _id:0 和 loc:”$loc” 的项目语句 我已将项目声明更改为:- $project: "_id": "0", "location": "$services.location", "loc":"$loc" 然而查询的结果不是表单LOC:[17.4374614,78.7482878,178.748287,7840051932597,17.56208737,78.56208737,78.284005186526,178.28400519526,17.5620637,78.3240051999554]我想仅发送LOC的平面阵列值 span> 太棒了!万分感谢! :)以上是关于从 mongoose find() 查询中提取一个值的主要内容,如果未能解决你的问题,请参考以下文章
从 Mongoose Find() 查询向对象数组添加属性 [重复]
从 Mongoose Find() 查询向对象数组添加属性 [重复]
未找到结果时如何从 Mongoose Find 查询返回自定义消息而不是空数组