2016-09-07 4 views
-2

Новый для mongoDB. Я запрашиваю массив, и я хочу найти первый экземпляр, где значение imageUrl не является пустой строкой. В настоящее время у меня есть следующее:Найти первый экземпляр непустой строки в MongoDB

gallery.imageUrl = gallery.Galleryslides [0] .imageUrl;

Но это просто вытаскивает первый экземпляр imageUrl независимо от того, является ли это пустой строкой.

+1

Можете ли вы изменить свой вопрос, чтобы показать пример документ и ожидаемый результат? – JohnnyHK

+0

вы должны предоставить некоторую схему, – vdj4y

ответ

0

догадываясь, что ваша схема что-то вроде этого

var gallery = { 
    _id: "something", 
    gallerySlides: [{ 
     imageUrl: "someUrl" 
    }] 
} 

этот запрос ниже будет найти всю галерею, которая соответствует _id галереи и все gallerySlides что имеет ImageUrl

db.galery.find({ _id: "something", "gallerySlides.imageUrl": {$ne: null} }) 
+0

с помощью find для _id: «что-то» не рационально, потому что в mongodb может быть только один документ с одним и тем же _id, это означает, что document_id уникален. – num8er

0

1) Я думаю, что Вы хотите для получения списка галерей по некоторым условиям
2) повторите эти документы в галерее и добавьте первое изображениеUrl слайда как обложку галереи.

Я надеюсь, что этот пример будет полезным:

const _ = require('lodash'); // don't forget install it: npm i --save lodash 

var cursor = db 
       .collection('gallery') 
       .find({ 
       gallerySlides: {$exists: true, $gt: {$size: 0}} 
       }); 

var galleries = []; 
cursor.each(function(gallery) { 
    gallery.imageUrl = _.find(gallery.Galleryslides, 
          function(slide) {return slide.imageUrl != ''}); 
    galleries.push(gallery); 
}); 
Смежные вопросы