2016-12-20 2 views
0

Ich entwerfe gerade ein System, das dem Etikettierungssystem von Gmail ähnelt. In meiner Sammlung "Nachrichten" habe ich ein Feld, das ein Array enthält, das die IDs der mit der aktuellen Nachricht verknüpften Labels enthält, die in einer anderen Collection gespeichert sind. Die JSON-Daten für einige Nachricht sieht wie folgt aus:Wie filtere ich eine Meteor Collection nach Elementen in einem Array-Datenfeld?

{ 
    "_id" : "W9uCWJCqx8ozsbX6t", 
    "name" : "Issue", 
    // ... some more data fields ... 
    "labels" : [ "R2syna2dnRdf4TDfC", "FHrjNbAT7Da2dRR5F" ] // IDs of labels in an array 
} 

Wie würde ich etwas entlang der Linien der .find() Methode für alle Nachrichten suchen, die einen bestimmten Label ID in seiner labels Feld enthalten?

+0

finden wie dieses 'db.messages.find tun können ({Labels: ""})' – Veeram

+0

@SagarReddy Danke, das hat funktioniert! Ich wusste nicht, dass 'find()' innerhalb des Arrays selbst suchen würde. – david3de

Antwort

0

Sie können $elemMatch-Operator von MongoDB verwenden.

Beispiel query:

Messages.find({labels : {$elemMatch : {$eq: id}}}); 

Weitere Anwendungsfälle können Sie etwas in der docs

Verwandte Themen