2016-12-01 3 views
1

Struktur Dokument -Mongoid Abfrage Hash-Felder mit anderen Feld

{ 
    "_id" : "b3bf7422-4993-4728-ae6f-98f35aa52a9c", 
    "feed_user_type" : "user",   
    "relation" : "reported_by", 
    "notification_title" : "Thank you for submitting the report. The moderators will now review the evidence.", 
    "notification_type" : { 
     "email" : false, 
     "feed" : false, 
     "notification" : true 
    }, 
    "updated_at" : ISODate("2016-12-01T12:14:41.269Z"), 
    "created_at" : ISODate("2016-12-01T12:14:41.269Z") 
} 

Nach Abfragen funktioniert

Userfeed.where(:notification_type.feed => true).offset(offset).limit(size).asc(:created_at) 
Userfeed.where(:feed_user_type => "user").offset(offset).limit(size).asc(:created_at) 

erste Abfrage das Feld in der Hash-abfragt und zweite ist einfache Abfrage ein normales Feld abfragt und gibt richtige Ergebnisse.

Aber ich kombinieren sowohl die Abfragen i überhaupt keine Ergebnisse nicht bekommen. Ich habe versucht, folgende zwei Syntax für die Kombination der obigen Abfrageklausel

Wie kann ich eine Hash-Feld Abfrageklausel mit normalen Feld Abfrageklausel kombinieren?

Dank

+0

leid, dass war Typo, bearbeitet die doc – user3775217

+0

werden Sie einen Fehler sehen, oder ist es Ihnen keine Ausgabe bekommen. Die Art, wie Sie die Abfragen kombinieren, arbeiten als UND-Bedingung. Wenn Sie also keine Ausgabe erhalten, stellen Sie sicher, dass Sie übereinstimmende Daten haben. aber an erster Stelle möchten Sie fragen, für diejenigen, die Benachrichtigungstyp Feed haben und Benutzer ist der aktuelle Benutzer? –

+0

können Sie .any_of ( {: notification_type.feed => true}, {: feed_user_type => current_user.id} ) Dies funktioniert als oder und Sie können sehen, ob Sie zuerst ausgegeben werden. –

Antwort

1

Diese Arbeit sollte:

all_of(:'notification_type.feed' => true,:feed_user_type => current_user.id) 
+0

dank erwartet, arbeitete diese. – user3775217