2013-02-05 14 views
5

Czy istnieje sposób na zwrócenie tylko wartości właściwości w rzucie mononom? Na przykład mam dokument, który ma właściwość, której wartością jest tablica. Chcę, aby obiekt zwracany z zapytania był tylko tablicą, a nie property: [ .. ]. Przykład:Zwróć tylko wartość tablicy w projekcji mongo

dokumentu:

db.test.insert({ name: "Andrew", 
    attributes: [ { title: "Happy"}, 
       { title: "Sad" } 
       ] 
}); 

Zapytanie:

db.test.find({name: "Andrew"},{attributes:1, "_id":0}); 

która zwraca:

{ "attributes" : [ { "title" : "Happy" }, { "title" : "Sad" } ] } 

chcę wrócić na tablicy:

[ { title: "Happy"}, 
    { title: "Sad" } 
] 

Czy jest jakiś sposób na zrobienie tego? Dzięki

+1

Niefortunnie projekcja MongoDBs nie działa tak jak ta strona serwera, musiałabyś odfiltrować to po stronie klienta – Sammaye

+0

Dzięki, to był mój strach ... –

Odpowiedz

3

JSON nie pozwala, aby tield był tablicą, więc normalne zapytanie na to nie pozwala. Możesz jednak zrobić to w ramach agregacji:

> db.test.remove(); 
> db.test.insert({ name: "Andrew", attributes: [ { title: "Happy"}, { title: "Sad" } ] }); 
> foo = db.test.aggregate({ $match: { name: "Andrew" } }, { $unwind: "$attributes" }, { $project: { _id: 0, title: "$attributes.title" } }); 
{ 
    "result" : [ 
     { 
      "title" : "Happy" 
     }, 
     { 
      "title" : "Sad" 
     } 
    ], 
    "ok" : 1 
} 
> foo.result 
[ { "title" : "Happy" }, { "title" : "Sad" } ] 

Nie tworzy to jednak obiektu kursora, który znajduje.

+0

Dzięki, miałem podejrzenie, że tablica nie była nawet ważna JSON . Dzięki za opis! –

+0

Tablica jawna jest poprawna JSON - różne typy danych w JSON mogą same stać i tworzyć poprawny dokument JSON. – dalgard

Powiązane problemy