mongodb - 在mongodb中将两个字段合并为一个新的对象字段
问题描述
我正在使用这段代码:
db.collection.updateMany({},[{ $set: {points: [ "$latitude", "$longitude" ] } },
{ $unset: [ "longitude", "latitude" ] }])
根据Latitude/Longitude
值创建点字段,但我需要在每个字段上都有一个“标签”,所以当我搜索时,它会显示如下内容:
"points":
{
[
{
"latitude": -3.724404,
"longitude": -38.557694
}
]
}
任何想法?
解决方案
如果我理解正确,您的文件如下所示:
[
{
"_id" : 123,
"latitude": -3.724404,
"longitude": -38.557694
},
{
"_id" : 456,
"latitude": -3.724404,
"longitude": -38.557694
}
]
您可以使用此查询:
db.collection.updateMany({}, [
{
$set: {
points: [
{
latitude: "$latitude",
longitude: "$longitude"
}
]
}
},
{ $unset: ["longitude", "latitude"] }
]);
要得到这样的东西:
[
{
"_id": 123,
"points": [
{
"latitude": -3.724404,
"longitude": -38.557694
}
]
},
{
"_id": 456,
"points": [
{
"latitude": -3.724404,
"longitude": -38.557694
}
]
}
]
但是为什么你需要points
一个数组,而不是它可以是这样的对象:
"points": {
"latitude": -3.724404,
"longitude": -38.557694
}
使用几乎相同的查询获取它:
db.collection.updateMany({}, [
{
$set: {
points:
{
latitude: "$latitude",
longitude: "$longitude"
}
}
},
{ $unset: ["longitude", "latitude"] }
]);
推荐阅读
- android - camera2 api图片是黑暗的android
- ios - Apple 要求使用 Parse-iOS-SDK 对 info.plist 进行“NSLocationAlwaysUsageDescription”描述
- wordpress - WordPress 用户角色
- r - 时间序列预测 - 无法将预测转换为实际值
- java - Java ANTLR4 输入不匹配'
' 期待 KEY - bash - bash 显示循环变量两次
- html - Bootstrap 4:手风琴中的卡片标题不会使文本响应移动大小
- node.js - 如何从 Promise 中捕获错误(node js)
- android - java.io.FileNotFoundException: /storage/emulated/0/Folder/Images/Folder/210.JPG.jpg (没有这样的文件或目录)
- uwp - 如何从子框架控制网格的可见性?