2016-08-16 3 views
0

у меня есть много вложенных документов в моей коллекции, я только хочу, чтобы принести массив конфигурации объектов (не пустой) и игнорировать все другие возражаютПолучить один массив объектов MongoDB

Я попробовал один из раствора на StackOverflow Find MongoDB records where array field is not empty (using Mongoose)

он возвращает мне массив конфигурации, но и другие объекты моей коллекции

здесь выборочные данные

http://imgur.com/a/RXLGv

этот запрос возвращает мне весь массив конфигурации объектов, но он также возвращает мне пустые массивы, которые я не хочу, любое решение для этого?

return Company.find({}, { 
    "configuration": 1 
}, { 
    "configuration": { 
    "$not": { 
     "$size": 0 
    } 
    } 
}) 

выборочные данные

configuration: [], 
configuration: [], 
configurtaion: [{ 
      "id": "2013", 
      "name": "TRUEAUTO", 
      "locationId": null, 
      "deviceIdentifier": "850", 
      "serialNumber": "", 
      "modelNumber": "OptiPlex 3010", 
      "tagNumber": null, 
      "purchaseDate": null, 
      "installationDate": "2016-07-28T00:00:00.000Z", 
      "warrantyExpirationDate": null, 
      "vendorNotes": null, 
      "notes": null, 
      "lastLoginName": null, 
      "billFlag": "false", 
      "backupServerName": null, 
      "backupProtectedDeviceList": null, 

      } 
     }] 

Я хочу, чтобы игнорировать пустые массивы и только для получения конфигурации объектов только

ответ

0
//You can use $exist property with $size 

Company.find({ configuration: { $exists: true, $not: {$size: 0} } }, { 
    "configuration": 1 
}) 
//Or you can check 
Company.find({'configuration.0': {$exists: true}}); 
+0

Я просто попытался это он дал мне другие вложенные документы, а также, что не требуется. Пожалуйста, см. Снимок экрана –

+1

Hi Shantanu; Я думаю, что у вас есть некоторые опечатки в вашем коде, например, «configurtaion» является ошибкой для «конфигурации». –

+0

Пробовал ли вы второй метод? –

Смежные вопросы