Есть ли способ фильтрации вложенных документов в CouchDB? - PullRequest
0 голосов
/ 22 января 2020

Я бы хотел отфильтровать вложенные документы из базы данных в CouchDB. Пример документа в базе данных будет:

{
    "Things": {
        "Thing:1": {
            "Number":1
            "Type": "TI"
        },
        "Thing:2": {
            "Number":2,
            "Type": "TI"
        }
    },
    "Type": "TD"
}

Можно ли создать представление, которое фильтрует поддокументы аналогично этому?

for(key in Object.keys(Things)) {
    return Things[key].Number == 2;
}

1 Ответ

1 голос
/ 23 января 2020

Да, довольно легко с функцией карты. Например

function (doc) {
   Object.keys(doc.Things).forEach(function(key) {
    if(doc.Things[key].Number === 2) emit(doc._id, 1);
   });
}

Это работает с CouchDB 2.3. Fauxton упрощает создание и тестирование представлений.

Дизайн do c будет выглядеть примерно так для представления _design / thing / _view / thing

{
  "_id": "_design/thing",     
  "views": {
    "thing": {
      "map": "function (doc) {\n   Object.keys(doc.Things).forEach(function(key) {\n    if(doc.Things[key].Number === 2) emit(doc._id, 1);\n});\n\n}"
    }
  },
  "language": "javascript"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...