Получить одно поле из массива поддокументов в mongodb - PullRequest
0 голосов
/ 05 августа 2020

Ниже приведена схема моей коллекции ...

Я пытаюсь получить значение «eak» из «Веб-сайт 1» и использовать это в моем приложении. Я изо всех сил пытаюсь извлечь значение из мульти встроенного массива.

_id:1234,
role:"client",
organization:"My Organization",
email:"myorg@notarealemail.com",
password:"myEncryptedPassword"
websites: 
[{
    _id:5554
    name:"Website1"
    wak:"567567567"
    wid:"5678"
    preview:"aSweetImage"
    cid:"678"
    integrations: 
    [{
        integration_data:[]
        _id:9876
        name:"Integration 1"
        img:"Integration Logo"
    },
    {
        integration_data:[]
        _id:8765
        name:"Integration 2"
        img:"Integration Logo"
        eak:"12345678"
    }]
},
{
    _id:5555
    name:"Website2"
    wak:"567567568"
    wid:"5679"
    preview:"aSweetImage"
    cid:"679"
    integrations: 
    [{
        integration_data:[]
        _id:9877
        name:"Integration 1"
        img:"Integration Logo"
    },
    {
        integration_data:[]
        _id:8766
        name:"Integration 2"
        img:"Integration Logo"
        eak:"12345679"
    }]
}] 

У меня есть доступ к "_ id" для «Веб-сайт 1» и я в настоящее время пытаюсь вызвать такое значение.

Users.find({
    eak: { "websites._id": wid, "integrations.name": "Integration 2" },
  })
    .then((eak) => {
      console.log("HERE", eak);
  })
    .catch((err) => {
      console.log(err);
  });

У меня такое чувство, что я просто не полностью понимаю, как работает find (). Я прочитал документацию mongodb, и мне явно чего-то не хватает.

консоль регистрирует:

HERE []

1 Ответ

0 голосов
/ 05 августа 2020

Есть две проблемы.

  1. Mon go db чувствительно к регистру. Поиск website не приведет к Website, а Website1 не совпадает с website 1

  2. Если вы решите вышеуказанную проблему, вам необходимо использовать позиционный оператор, чтобы вернуть соответствующий документ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...