2013-07-10 37 views
1

我對Meteor和它的Mongo DB非常陌生,我想知道如何找到'相關文檔'。流星/ Mongodb根據文檔標籤找到相關記錄

我有崗位的集合,有標籤,就像這樣:

[{ title : 'title', tags: [{name : 'tag1'}, {name : 'tag2'}]}] 

現在我想查詢我的數據庫,查找具有這些標記集,在這裏我想訂一個路口的帖子交點下降的大小的結果。

這應該如何編碼到find()查詢中,其中查詢被賦予一個標籤數組來檢查輸入?

回答

0

很容易利用這種結構:

[{ 
    title: 'title', 
    tags: ['tag1', 'tag2'], 
}] 

然後你使用:

Documents.find({ 
    tags: {$all: [ "alpha", "beta", "gamma" ]} 
}); 

在這裏看到:http://docs.mongodb.org/manual/reference/operator/all/#op._S_all

現在,它可能會或可能不會與複雜的對象,你有工作, 我不確定。試試這個:如果你需要指定的結構

Documents.find({ 
    tags: {$all: [{name: "alpha"}, {name: "beta"}]} 
}); 

和上面的查詢不工作,留給你的$where查詢。它非常靈活,但不推薦,因爲它比其他的慢得多。在這裏看到:

http://docs.mongodb.org/manual/reference/operator/where/#op._S_where

 


 

編輯:這一個應該做的工作:

Documents.find({ 
    'tags.name': {$all: ["alpha", "beta"]} 
}); 
+0

是否有與$ all相媲美的東西,那並不意味着ALL,而是INTERSECT?所以它匹配如果它與tags.name相交,即。一些標籤匹配。如果我們可以按照交叉點的大小對它進行排序,會更好 –

+0

如何排除當前文檔?就像博客文章邊欄中的「相關帖子」。 – RZKY

1

您也可以找到SIMPL Ÿ爲:

Collection.find({"tags.name" : "tag1"}) 

這會得到有tags陣列中的所有'tag1'匹配文檔。