2016-04-05 19 views
0

Hy,MongoDB Java - JSON Query itibaren MongoDB Java sürücüsü sorgusu aşağıdaki MongoDB Sorgu çeviri biraz yardıma ihtiyacım

Belgeye.

Sorgunun çalıştığını lütfen unutmayın.

db.days.aggregate([ 
    { $match: { 'day' : 'March_1'}}, 
    { $project: { 
     _id : 0, 
     day: 1, 
     events: {$filter: { 
      input: '$events', 
      as: 'event', 
      cond: {$eq: ['$$event.year', '2002']} 
     }} 
    }} 
]) 

Denemem ancak bu başarısız oldu ve sizin yardımınıza ihtiyacım var. Ben alıyorum

Document query = new Document("$match", new Document("day", day)). 
    append("$project", new Document("_id", 0). 
      append("day", 1). 
      append("events", new Document("$filter", new Document(
        "input", "$" + category). 
        append("as", "event"). 
        append("cond", new Document("$eq", Arrays.asList("$$event.year", year)))))); 

hata

"{ "ok" : 0.0, "errmsg" : "A pipeline stage specification object must contain exactly one field.", "code" : 16435 }" 

Çok teşekkür ederim olduğunu!

+0

kullanın aynı nesnede $ maçı $ ve projeyi koymayın? – Arcath

+0

Lütfen düzenlemeye bakın. Teşekkür ederim! –

+0

Sanırım sorun, bir dizi yerine bir belge oluşturmaktır. Ancak Belgeleri kullanarak bir dizi oluşturan hiçbir şey bulamadım. –

cevap

4

listesini alıyorsanız hangi hata

AggregateIterable<Document> iterable = collection.aggregate(
    asList(
    new Document("$match", new Document("day", day)), 
    new Document("$project", 
     new Document("_id", "0") 
      .append("day", 1) 
      .append(
       "events", 
       new Document(
        "$filter", 
        new Document("input", "$events") 
         .append("as", "event") 
         .append(
          "cond", 
          new Document("eq", Arrays.asList("$$event.year", year)) 
         ) 
       ) 
      ) 
    ) 
    ) 
) 
+0

Çok teşekkür ederim! Birkaç gün önce MongoDB kullanmaya başladım ve kendimi Java ile öldüreceğim ... –