Создание представления MongoDb содержит предложение find

Представьте, что у меня есть коллекция с именем user с нижеследующими полями - имя - семейный возраст

и я хочу создать представление, которое возвращает всех пользователей, которые являются 19 и 21

Всего 2 ответа


ОК, давайте начнем с добавления некоторых данных в коллекцию users , позволяющих иметь несколько человек в разном возрасте:

> db.users.insertMany([
...    { "name": "foo", age: 12 },
...    { "name": "bar", age: 19 },
...    { "name": "wibble", age: 20 },
...    { "name": "wobble", age: 21 }
... ]);
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("5bd18277289332325f377fff"),
                ObjectId("5bd18277289332325f378000"),
                ObjectId("5bd18277289332325f378001"),
                ObjectId("5bd18277289332325f378002")
        ]
}

Затем мы можем написать представление поверх этой коллекции, используя метод createView который принимает конвейер агрегации:

> var pipelines = [ { "$match" : { "$or" : [ { "age" : 19 }, { "age" :21 } ] } } ];
> db.createView("users19and21", "users", pipelines);
{ "ok" : 1 }

Если вы хотите проверить свой конвейер перед созданием представления, вы можете просто вызвать метод aggregate в коллекции users , например:

> var pipelines = [ { "$match" : { "$or" : [ { "age" : 19 }, { "age" :21 } ] } } ];
> db.users.aggregate(pipelines);
{ "_id" : ObjectId("5bd18277289332325f378000"), "name" : "bar", "age" : 19 }
{ "_id" : ObjectId("5bd18277289332325f378002"), "name" : "wobble", "age" : 21 }

Как только у нас появится наше представление, мы можем просто запросить его как коллекцию:

> db.users19and21.find()
{ "_id" : ObjectId("5bd18277289332325f378000"), "name" : "bar", "age" : 19 }
{ "_id" : ObjectId("5bd18277289332325f378002"), "name" : "wobble", "age" : 21 }

Более подробную информацию о создании просмотров в mongodb можно найти в их документации - https://docs.mongodb.com/manual/reference/method/db.createView/


пытаться

db.createView( "viewName", "collection", [
    { $match : { key : value } }
    ,...
    ,...
])

Есть идеи?

10000