mongodb запрос и возврат определенных коллекций - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь вернуть все коллекции, где поле grade: 'Grade Two', я пробовал несколько запросов, но получаю либо ошибку, либо ничего не возвращается.Я хочу, чтобы мой запрос возвращал только документы из коллекции с 'Grade Two', которые должны возвращать только два документа.

Я пробовал следующие запросы:

db.users.find({grade: "Grade Two"})
db.users.find({}, {grade: "Grade Two"})
db.users.find({}, {profile: {grade: "Grade Two"}})

Я получаю ошибкус сообщением: "errmsg" : "Unsupported projection option: profile: { grade: \"Grade Two\" }",

{
    {
      "_id": "4YH8hDjNhN39CTtZh",
      "username": "philcee.philips",
      "emails": [
        {
          "address": "ph@gmail.com",
          "verified": false
        }
      ],
      "profile": {
        "name": {
          "firstname": "Philcee",
          "lastname": "Philips"
        },
        "gender": "Female",
        "nationality": "foo",
        "grade": "Grade Two"
      },
      "roles": {
        "__global_roles__": [
          "student"
        ]
      },
    {
          "_id": "8UH8hDjNhN39CTtm6",
          "username": "gibson.wilson",
          "emails": [
            {
              "address": "wil@gmail.com",
              "verified": false
            }
          ],
          "profile": {
            "name": {
              "firstname": "Gibson",
              "lastname": "Wilson"
            },
            "gender": "Male",
            "nationality": "bar",
            "grade": "Grade Two"
          },
          "roles": {
            "__global_roles__": [
              "student"
            ]
          },


    {
          "_id": "i7G8hDjKhN39CTYt9",
          "username": "daniel.jones",
          "emails": [
            {
              "address": "jones@gmail.com",
              "verified": false
            }
          ],
          "profile": {
            "name": {
              "firstname": "Daniel",
              "lastname": "Jones"
            },
            "gender": "Male",
            "nationality": "bar",
            "grade": "Grade One"
          },
          "roles": {
            "__global_roles__": [
              "student"
            ]
          }
    }

Есть ли другой способ запроса определенных документов из упомянутой коллекции?

1 Ответ

0 голосов
/ 25 ноября 2018

Вы можете использовать нотацию .dot, чтобы найти внутри объекта

db.users.find({ "profile.grade": "Grade Two" }) 

И чтобы вернуть определенное поле, вы можете использовать проекцию во втором аргументе find запроса

db.users.find({ "profile.grade": "Grade Two" }, { "profile.grade": 1 })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...