0
このURIのコレクションと、URIとhttpMethodを渡す機能を作成しました。これはMongoDBクエリを作成して一致する文書を検索します。キャッチは、URIはそれらの動的要素を持つことができるということです...ので、のように:MongoDB条件との完全一致
/api/v1/users/{userid}/profile
しかし、また、このようなURIがあることができます:
/api/vi/users/all/
私は、収集に私のURIをブロックアウトだから私はこのMongoの質問を書いた:
db.apis.aggregate({
"$match" : {
"$and" : [
{"$or" : [{"_uri_.blocks.block" : "api","_uri_.blocks.position" : {"$eq" : 1.0}},{"_uri_.blocks.isWild" : true,"_uri_.blocks.position" : {"$eq" : 1.0}}]},
{"$or" : [{"_uri_.blocks.block" : "v1","_uri_.blocks.position" : {"$eq" : 2.0}},{"_uri_.blocks.isWild" : true,"_uri_.blocks.position" : {"$eq" : 2.0}}]},
{"$or" : [{"_uri_.blocks.block" : "users","_uri_.blocks.position" : {"$eq" : 3.0}},{"_uri_.blocks.isWild" : true,"_uri_.blocks.position" : {"$eq" : 3.0}}]},
{"$or" : [{"_uri_.blocks.block" : "{userid}","_uri_.blocks.position" : {"$eq" : 4.0}},{"_uri_.blocks.isWild" : true,"_uri_.blocks.position" : {"$eq" : 4.0}}]},
{"$or" : [{"_uri_.blocks.block" : "profile","_uri_.blocks.position" : {"$eq" : 5.0}},{"_uri_.blocks.isWild" : true,"_uri_.blocks.position" : {"$eq" : 5.0}}]},
{"_canonical_._httpMethod_":"POST"}
]
}
},
{"$limit" : 1.0})
しかし、それは私が望んでいたように完全に一致するようには見えない。
最も正確な文書のみを返すようにMongoに問い合わせる方法に関する提案はありますか?
正規表現のURIをドキュメントに追加すると、そこからURIを検索することはできますか? は、だから私の文書が /api/v.*/users/.*/profile URI のためにこれを持っているかもしれませんし、その後( "URI" db.apis.findような何かを: "/ API/V2 /ユーザー/ 12312341/profile ") – TheJason
あなたは何をしようとしているのかわかりませんが、特定のURLパターンで一致するuserIdを探してみませんか? –
これは私の問題です。私はかなり大きなAPIネットワーク(3500以上の異なるURI)を自動化しようとしています。だから、私は決してURIのどのブロックが静的か動的か分からないでしょう。 コレクションのURIごとにルーティング情報が含まれている文書とそうでないものがあります。 – TheJason