Выберите определенные поля в схеме вложенного объекта карты в БД Mongo - PullRequest
3 голосов
/ 18 апреля 2019

Например: - Ниже приведен пример документа в коллекции «клубы»,

Образец документа

{
    "_id" : ObjectId("5cb8218ce2911e7c707e27fa"),
    "name" : "name 1",
    "members" : {
        "user_1" : {
            "created" : ISODate("2019-04-18T07:04:44.748Z"),
            "lastActive" : 1555584757282,
            "state" : 1,
            "unreadMessages" : 0,
            "userId" : "user_1_id"
        },
        "user_2" : {
            "lastActive" : 1555588409686,
            "state" : 1,
            "unreadMessages" : 0,
            "userId" : "user_2_id"
        }
    }
}

Запрос к базе данных Mongo должен возвращать следующие поля:-

желаемый выходной сигнал-

{
    {
        "_id" : ObjectId("5cb8218ce2911e7c707e27fa"),
        "name" : "name 1",
        "members" : {
            "user_1" : {
                "lastActive" : 1555584757282
            },
            "user_2" : {
                "lastActive" : 1555588409686
            }
         }
    }
}

1 Ответ

1 голос
/ 18 апреля 2019

Вы можете использовать ниже агрегации

db.collection.aggregate([
  { "$addFields": {
    "members": {
      "$arrayToObject": {
        "$map": {
          "input": { "$objectToArray": "$members" },
          "in": {
            "k": "$$this.k",
            "v": { "lastActive": "$$this.v.lastActive" }
          }
        }
      }
    }
  }}
])

Example

...