MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Заявка на MongoDB с elemMatch за вложени данни от масив

Вашата заявка просто връща всички документи, които съдържат modules елемент, където name == 'foo' . За да използвате $elemMatch за да филтрирате изхода, трябва да го използвате в аргумента за проекция на find извикване вместо част от заявката:

db.test.find({}, {modules: {$elemMatch: {name: 'foo'}}})

За да комбинирате и двете концепции, можете да посочите индекса на елемента на масива, съвпадащ в заявката с $ :

db.test.find({modules: {$elemMatch: {name: 'foo'}}}, {'modules.$': 1})

Така или иначе връща:

{
  "_id": ObjectId("..."),
  "modules": [
    {
      "name": "foo",
      "mandatory": false,
      "group": [
        {
          "name": "g1"
        }
      ]
    }
  ]
}

Ако имате нужда от други полета, включени в изхода, добавете ги към обекта за проектиране (напр. name: 1 ).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да намерите дължината на масива mongodb

  2. Мигриране на MongoDB към DynamoDB, част 1

  3. Meteor връща грешка в невалиден шестнадесетичен низ, опитвайки се да създаде ObjectID?

  4. Най-добрият начин да се свържете с MongoDB с помощта на Node.js

  5. Хибернация с MongoDB