如何在我的查询结果中使用 mongoDB collection 的键作为具有某个值的键?
How to use the key of mongoDB collection as a key with some value in my query result?
假设这是我的 collection :
{
{
"productType":"bike",
"productID":1,
"lat":22.7,
"long":77.4
},
{
"productType":"car",
"productID":5,
"lat":25.7,
"long":75.4
},
{
"productType":"bike",
"productID":2,
"lat":26.7,
"long":76.4
}
}
我想使用产品类型作为我的 mongo 查询和分组的关键,以获得如下结果:
{
"bike":{
"1":{
"latitude":"22.7",
"longitude":"77.4"
},
"2":{
"latitude":"26.7",
"longitude":"76.4"
}
},
"car":{
"5":{
"latitude":"25.7",
"longitude":"75.4"
}
}
}
我尝试使用 $replaceRoot 但无法获得所需的结果。
试试这个查询:
db.products.aggregate([
{
$group: {
_id: "$productType",
products: {
$push: {
"k": { $toString: "$productID" },
"v": {
latitude: "$lat",
longitude: "$long"
}
}
}
}
},
{
$replaceWith: {
array: [
{
k: "$_id",
v: { $arrayToObject: "$products" }
}
]
}
},
{
$replaceRoot: {
newRoot: { $arrayToObject: "$array" }
}
}
]);
输出:
/* 1 */
{
"bike" : {
"1" : {
"latitude" : 22.7,
"longitude" : 77.4
},
"2" : {
"latitude" : 26.7,
"longitude" : 76.4
}
}
},
/* 2 */
{
"car" : {
"5" : {
"latitude" : 25.7,
"longitude" : 75.4
}
}
}
假设这是我的 collection :
{
{
"productType":"bike",
"productID":1,
"lat":22.7,
"long":77.4
},
{
"productType":"car",
"productID":5,
"lat":25.7,
"long":75.4
},
{
"productType":"bike",
"productID":2,
"lat":26.7,
"long":76.4
}
}
我想使用产品类型作为我的 mongo 查询和分组的关键,以获得如下结果:
{
"bike":{
"1":{
"latitude":"22.7",
"longitude":"77.4"
},
"2":{
"latitude":"26.7",
"longitude":"76.4"
}
},
"car":{
"5":{
"latitude":"25.7",
"longitude":"75.4"
}
}
}
我尝试使用 $replaceRoot 但无法获得所需的结果。
试试这个查询:
db.products.aggregate([
{
$group: {
_id: "$productType",
products: {
$push: {
"k": { $toString: "$productID" },
"v": {
latitude: "$lat",
longitude: "$long"
}
}
}
}
},
{
$replaceWith: {
array: [
{
k: "$_id",
v: { $arrayToObject: "$products" }
}
]
}
},
{
$replaceRoot: {
newRoot: { $arrayToObject: "$array" }
}
}
]);
输出:
/* 1 */
{
"bike" : {
"1" : {
"latitude" : 22.7,
"longitude" : 77.4
},
"2" : {
"latitude" : 26.7,
"longitude" : 76.4
}
}
},
/* 2 */
{
"car" : {
"5" : {
"latitude" : 25.7,
"longitude" : 75.4
}
}
}