1

AQL を使用して、「リリース」に昇格されていないすべてのビルドのリストを取得しようとしています。

私たちのバイナリは、ステータスの統合 -> aat -> リリースを通過します。プロモーション ステータスの統合と aat がリリースされていないもののリストを取得したいと考えています。

ビルドの 1 つの例には、次のステータスがあります。

"statuses" : [ {
  "status" : "integration",
  "timestamp" : "2016-04-20T08:36:42.009+0000",
  "user" : "user",
  "ciUser" : "changes",
  "timestampDate" : 1461141402009
}, {
  "status" : "aat",
  "repository" : "repo-aat",
  "timestamp" : "2016-04-20T08:56:11.843+0000",
  "user" : "user",
  "ciUser" : "changes",
  "timestampDate" : 1461142571843
}, {
  "status" : "aat",
  "repository" : "repo-aat",
  "timestamp" : "2016-04-20T08:58:55.417+0000",
  "user" : "user",
  "ciUser" : "changes",
  "timestampDate" : 1461142735417
}, {
  "status" : "aat",
  "repository" : "repo-aat",
  "timestamp" : "2016-04-20T09:20:32.619+0000",
  "user" : "user",
  "ciUser" : "changes",
  "timestampDate" : 1461144032619
}, {
  "status" : "release",
  "repository" : "repo-release",
  "timestamp" : "2016-04-20T09:30:12.143+0000",
  "user" : "user",
  "ciUser" : "changes",
  "timestampDate" : 1461144612143
}, {
  "status" : "release",
  "repository" : "repo-release",
  "timestamp" : "2016-04-20T09:40:50.595+0000",
  "user" : "admin",
  "ciUser" : "changes",
  "timestampDate" : 1461145250595
} ],

このビルドは、次を設定するかどうかに関係なく一致します。

{"promotion.status": {"$nmatch":"aat"}}

{"promotion.status": {"$nmatch":"release"}}
{"promotion.status": {"$nmatch":"integration"}}

リクエストで:

builds.find({
  "$and" : [
  {"name": {"$match": "test"}},
  {"created": {"$lt": "2016-12-01"}},
  {"promotion.status": {"$nmatch":"release"}}
  ]
}).include("promotion.status").limit(10)

次の応答が得られます。

{
"results" : [ {
  "build.created" : "2016-04-20T10:12:46.905Z",
  "build.created_by" : "test",
  "build.modified" : "2016-04-20T11:45:12.309Z",
  "build.modified_by" : "admin",
  "build.name" : "user",
  "build.number" : "2551",
  "build.promotions" : [ {
    "build.promotion.status" : "aat"
  }, {
    "build.promotion.status" : "integration"
  } ],
  "build.url" : "URL"
} ],
"range" : {
  "start_pos" : 0,
  "end_pos" : 1,
  "total" : 1,
  "limit" : 10
}
4

2 に答える 2

1

でワイルドカードを使用する必要がない場合は、代わりに次のように$nmatch使用できます。$ne

builds.find({
  "$and" : [
  {"name": {"$match": "test"}},
  {"created": {"$lt": "2016-12-01"}},
  {"promotion.status": {"$ne":"release"}}
  ]
}).include("promotion.status").limit(10)

では$nmatch、以下も機能します。

builds.find({
  "$and" : [
  {"name": {"$match": "test"}},
  {"created": {"$lt": "2016-12-01"}},
  {"promotion.status": {"$nmatch":"releas*"}}
  ]
}).include("promotion.status").limit(10)
于 2017-01-04T20:18:19.603 に答える