集計で次の正規表現を使用することはできません。私はたくさんの例を読んでいますが、うまくいきません。私が望むのは、3文字以下の単語を除外することです(例:1 a2 aaa a-)。しかし、彼らはまだ現れる。
これは私の正規表現です(私は正しいと思います)\b\w?\w?\w?\b
です。
そしてここに集約され:
Meteor.publish("topics", function() {
ReactiveAggregate(this, Articles, [
{
$project: {
topic: { $split: ["$title", " "] },
article: "$$ROOT"
}
},
{
$unwind: {
path: "$topic"
}
},
{
$match: {
topic: { $nin: ["sports", "\b\w?\w?\w?\b"] }
}
},
{
$group: {
_id: "$topic",
count: { $sum: 1 },
articles: { $push: "$article" }
}
}
], { clientCollection: "clientTopic" });
});
例:
/* Article 1 */
{
"_id" : "SB4mKAxaBijQXnS73",
"title" : "Messi signs new contract with Barcelona"
}
/* Article 2 */
{
"_id" : "rhqioBkePzGCrRFLp",
"title" : "Messi has 30 years old"
}
/* Article 3 */
{
"_id" : "X6LochRZw32op39W8",
"title" : "President of Argentina visits Messi"
}
私はのようなコレクションを取得したい:言葉new
、あなたが見ることができるように
Messi ==> {_id: "Messi", articles: [Article 1, Article 2, Article 3], count: 3 }
signs ==> {_id: "signs", articles: [Article 1], count: 1 }
contract ==> {_id: "contract", articles: [Article 1], count: 1 }
with ==> {_id: "with", articles: [Article 1], count: 1 }
Barcelona ==> {_id: "Barcelona", articles: [Article 1], count: 1 }
years ==> {_id: "years", articles: [Article 2], count: 1 }
President ==> {_id: "President", articles: [Article 3], count: 1 }
Argentina ==> {_id: "Argentina", articles: [Article 3], count: 1 }
visits ==> {_id: "visits", articles: [Article 3], count: 1 }
、 has
,30
,old
,長さが3文字以下であるため、3210は表示されません。
thesタイトルの単語sports
の記事はコレクションに含まれていませんが、正規表現に一致するものは含まれています。
含めるべき文書と除外すべき文書の例を表示できますか?これにより、クエリ条件が実際にどのようなものであるべきかが明確になります。 –
とにかく正規表現が正しく表示されません。 ''/\ b \ w {3} \ b/'' –
@NeilLunnでなければなりません。私は "ノイズ"や "停止"の言葉(や、や、それ、など...)を取り除きたい。 –