mongous 0.1.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.adoc +115 -30
- data/README.ja.adoc +115 -30
- data/lib/mongous/document.rb +50 -27
- data/lib/mongous/extention.rb +50 -43
- data/lib/mongous/filter.rb +45 -51
- data/lib/mongous/version.rb +1 -1
- data/sample/declare_compact_1.rb +1 -1
- data/sample/declare_label_1.rb +1 -1
- data/sample/declare_ndex_1.rb +1 -1
- data/sample/declare_ndex_2.rb +1 -1
- data/sample/declare_strict_1.rb +7 -5
- data/sample/declare_strict_2.rb +3 -2
- data/sample/{multi_docs_1.rb → multi_collection_1.rb} +0 -0
- data/sample/multi_collection_2.rb +61 -0
- data/sample/query_basic_1.rb +0 -1
- data/sample/query_basic_2.rb +4 -5
- data/sample/query_basic_3.rb +2 -3
- data/sample/query_basic_4.rb +3 -4
- data/sample/query_basic_5.rb +2 -3
- data/sample/query_detail_3.rb +3 -2
- data/sample/{query_basic_6.rb → query_filter_1.rb} +7 -4
- data/sample/query_filter_2.rb +50 -0
- data/sample/{query_super_1.rb → query_find_1.rb} +0 -1
- data/sample/query_projection_1.rb +5 -8
- data/sample/query_skip_limit_1.rb +37 -0
- data/sample/query_skip_limit_2.rb +49 -0
- data/sample/query_sort_order_1.rb +46 -0
- data/sample/save_basic_1.rb +0 -1
- data/sample/save_basic_2.rb +0 -1
- data/sample/save_basic_3.rb +0 -1
- data/sample/save_detail_1.rb +4 -3
- data/sample/save_detail_2.rb +4 -3
- data/sample/save_detail_3.rb +6 -5
- data/sample/save_verify_1.rb +3 -2
- data/sample/save_verify_3.rb +1 -1
- data/sample/zap_basic_2.rb +1 -1
- data/sample/zap_basic_3.rb +1 -1
- metadata +10 -11
- data/sample/multi_docs_2.rb +0 -58
- data/sample/query_basic_7.rb +0 -38
- data/sample/query_limit_1.rb +0 -44
- data/sample/query_order_1.rb +0 -49
- data/sample/template_article.rb +0 -5
- data/sample/template_person.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26e437e93bf76ff87a088329b744df4f1425d7b14c106d80edb46f12bbfde12f
|
4
|
+
data.tar.gz: 4e6bb7dd48f0799ce33165629c658b174316fd9d271f4f51ae866b804607ae59
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 392818352168bf2c196c90693559f421e35fe6ed15bdaa013a9a3f651a5dbda66f2eb0f4ed38c25e28c5d77c1c7d5122d8384c8de56bb701b896ffe2133b3ef0
|
7
|
+
data.tar.gz: 401266df4545a41f3b8d5e090f986dc2cd8215b48d153da195b8c276316a3e9ebed07b8a24e5dd677cc469d9676415a30ffb844f29211064c3d1fefa4c6badd5
|
data/README.adoc
CHANGED
@@ -60,9 +60,12 @@ class Book
|
|
60
60
|
field :style, String, ["A4","B5","A5","B6"]
|
61
61
|
field :price, Integer, (0..1_000_000)
|
62
62
|
field :page, Integer, proc{ page % 4 == 0 }
|
63
|
-
field :publish_at, Date, &proc{ Date.today }
|
64
63
|
field :isbn, String, proc{ isbn? }
|
65
|
-
field :lang, String,
|
64
|
+
field :lang, String, default: "en"
|
65
|
+
field :created_at, Time, create: proc{ Time.now }
|
66
|
+
field :updated_at, Time, update: proc{ Time.now }
|
67
|
+
|
68
|
+
filter :foobar, {title: /foobar/}
|
66
69
|
|
67
70
|
verify :strict
|
68
71
|
verify do
|
@@ -100,31 +103,33 @@ Book.create( **doc )
|
|
100
103
|
----
|
101
104
|
pp books = Book.all
|
102
105
|
|
103
|
-
p book = Book.
|
106
|
+
p book = Book.where( title: "title 1" ).first
|
104
107
|
|
105
|
-
books = Book.
|
108
|
+
books = Book.where( title: /title/ ).all
|
106
109
|
books.each do |book|
|
107
110
|
p book
|
108
111
|
end
|
109
112
|
|
110
|
-
Book.
|
113
|
+
Book.where( title: /title/ ).projection( _id: 0 ).each do |book|
|
111
114
|
p book
|
112
115
|
end
|
113
116
|
|
114
|
-
Book.
|
117
|
+
Book.where( price: (1..2000), style: ["A4","A5"] ).each do |book|
|
115
118
|
p book
|
116
119
|
end
|
117
120
|
|
118
|
-
filter1 = Book.
|
119
|
-
filter2 = Book.
|
120
|
-
filter3 = Book.
|
121
|
+
filter1 = Book.where( title: /title/ )
|
122
|
+
filter2 = Book.where( :foobar )
|
123
|
+
filter3 = Book.where( price: (1..2000) )
|
124
|
+
filter4 = Book.where( style: ["A4","A5"] )
|
125
|
+
|
121
126
|
Book.not( filter1 ).each do |book|
|
122
127
|
p book
|
123
128
|
end
|
124
|
-
Book.and( filter1,
|
129
|
+
Book.and( filter1, filter3 ).each do |book|
|
125
130
|
p book
|
126
131
|
end
|
127
|
-
Book.or(
|
132
|
+
Book.or( filter2, filter4 ).each do |book|
|
128
133
|
p book
|
129
134
|
end
|
130
135
|
|
@@ -132,14 +137,14 @@ Book.find( { title: /title/ }, { projection: {_id: 0} } ).each do |book|
|
|
132
137
|
p book
|
133
138
|
end
|
134
139
|
|
135
|
-
pp Book.
|
140
|
+
pp Book.where( title: /title/ )[0, 5].all
|
136
141
|
----
|
137
142
|
|
138
143
|
=== Update document
|
139
144
|
|
140
145
|
[source,ruby]
|
141
146
|
----
|
142
|
-
book = Book.
|
147
|
+
book = Book.where( title: "title 1" ).first
|
143
148
|
book.title = "title 1 [update]"
|
144
149
|
book.save
|
145
150
|
----
|
@@ -148,7 +153,7 @@ book.save
|
|
148
153
|
|
149
154
|
[source,ruby]
|
150
155
|
----
|
151
|
-
book = Book.
|
156
|
+
book = Book.where( title: "title 1" ).first
|
152
157
|
book.delete
|
153
158
|
----
|
154
159
|
|
@@ -158,7 +163,7 @@ book.delete
|
|
158
163
|
|
159
164
|
[source,ruby]
|
160
165
|
----
|
161
|
-
Mongous.connect!( hosts_or_uri = nil, **
|
166
|
+
Mongous.connect!( hosts_or_uri = nil, **options )
|
162
167
|
----
|
163
168
|
|
164
169
|
* Result:
|
@@ -166,21 +171,21 @@ Mongous.connect!( hosts_or_uri = nil, **opts )
|
|
166
171
|
|
167
172
|
* Parameter:
|
168
173
|
** hosts_or_uri: Array of hosts, or URI (default: ["localhost:21017"])
|
169
|
-
**
|
174
|
+
** options: Options.
|
170
175
|
*** file: Path to database configuration file.
|
171
176
|
*** mode: Execution mode. (default: "development")
|
172
177
|
*** database: Database name. (default: "test")
|
173
|
-
***
|
178
|
+
*** Other optional arguments for Mongo::Client.new.
|
174
179
|
|
175
180
|
=== Connect database.
|
176
181
|
|
177
182
|
[source,ruby]
|
178
183
|
----
|
179
|
-
Mongous.connect( hosts_or_uri = nil, **
|
184
|
+
Mongous.connect( hosts_or_uri = nil, **options )
|
180
185
|
----
|
181
186
|
|
182
187
|
* Result:
|
183
|
-
** Mongo::Client.
|
188
|
+
** Mongo::Client instance.
|
184
189
|
|
185
190
|
=== Include document functions.
|
186
191
|
|
@@ -193,42 +198,58 @@ include Mongous::Document
|
|
193
198
|
|
194
199
|
[source,ruby]
|
195
200
|
----
|
196
|
-
|
201
|
+
self.client=( _client )
|
197
202
|
----
|
198
203
|
|
199
204
|
* Result:
|
200
|
-
**
|
205
|
+
** Mongo::Client instance.
|
201
206
|
|
202
207
|
* Parameter:
|
203
208
|
** client: Mongo::Client instance.
|
204
209
|
|
210
|
+
=== Bind another collection.
|
211
|
+
|
212
|
+
[source,ruby]
|
213
|
+
----
|
214
|
+
self.collection_name=( _collection_name )
|
215
|
+
----
|
216
|
+
|
217
|
+
* Result:
|
218
|
+
** Collection name string.
|
219
|
+
|
220
|
+
* Parameter:
|
221
|
+
** collection_name: Collection name.
|
222
|
+
|
205
223
|
=== Declare document structure.
|
206
224
|
|
207
225
|
[source,ruby]
|
208
226
|
----
|
209
|
-
field(
|
227
|
+
field( symbol, *attrs, **items )
|
210
228
|
----
|
211
229
|
|
212
230
|
* Parameter:
|
213
|
-
**
|
231
|
+
** symbol: Field name.
|
214
232
|
** attrs: Field attributes.
|
215
233
|
*** Class: Class for field verification.
|
216
234
|
*** Proc: Proc for field verification.
|
217
235
|
*** Range: Range for field verification.
|
218
236
|
*** Array: Array for field verification.
|
219
|
-
*** Symbol: Special
|
237
|
+
*** Symbol: Special directive symbol.
|
220
238
|
**** must: Not nil nor empty.
|
221
|
-
**
|
239
|
+
** items: Operation when saving.
|
240
|
+
*** default: Value or proc when undefined.
|
241
|
+
*** create: Value or proc when saving a new document.
|
242
|
+
*** update: Value or proc when saving update document.
|
222
243
|
|
223
244
|
=== Verify before save or assignment action.
|
224
245
|
|
225
246
|
[source,ruby]
|
226
247
|
----
|
227
|
-
verify( *
|
248
|
+
verify( *directives, &block )
|
228
249
|
----
|
229
250
|
|
230
251
|
* Parameter:
|
231
|
-
**
|
252
|
+
** directives: Special directive symbol.
|
232
253
|
*** strict: Verify that it is a defined item name.
|
233
254
|
** block: Describe the content that verifies each item value and returns the truth.
|
234
255
|
|
@@ -236,12 +257,12 @@ verify( *syms, &block )
|
|
236
257
|
|
237
258
|
[source,ruby]
|
238
259
|
----
|
239
|
-
index( *
|
260
|
+
index( *symbols, **options )
|
240
261
|
----
|
241
262
|
|
242
263
|
* Parameter:
|
243
|
-
**
|
244
|
-
**
|
264
|
+
** symbols: Field names.
|
265
|
+
** options: Options for Mongo::Collection#indexes().
|
245
266
|
|
246
267
|
=== Verify field value is not nil nor empty.
|
247
268
|
|
@@ -256,6 +277,70 @@ having?( label )
|
|
256
277
|
* Parameter:
|
257
278
|
** label: Field label for method call.
|
258
279
|
|
280
|
+
=== Name the search condition.
|
281
|
+
|
282
|
+
[source,ruby]
|
283
|
+
----
|
284
|
+
filter( symbol, filter_or_cond )
|
285
|
+
----
|
286
|
+
|
287
|
+
* Parameter:
|
288
|
+
** symbol: Filter name.
|
289
|
+
** filter_or_cond: Filter or search criteria.
|
290
|
+
|
291
|
+
=== Search condition.
|
292
|
+
|
293
|
+
[source,ruby]
|
294
|
+
----
|
295
|
+
where( filter = nil, **conditions )
|
296
|
+
----
|
297
|
+
|
298
|
+
* Result:
|
299
|
+
** Filter instance.
|
300
|
+
|
301
|
+
* Parameter:
|
302
|
+
** filter: Filter name symbol, or filter instance.
|
303
|
+
** conditions: Search criteria.
|
304
|
+
|
305
|
+
=== NOT search condition.
|
306
|
+
|
307
|
+
[source,ruby]
|
308
|
+
----
|
309
|
+
not( filter = nil, **conditions )
|
310
|
+
----
|
311
|
+
|
312
|
+
* Result:
|
313
|
+
** Filter instance.
|
314
|
+
|
315
|
+
* Parameter:
|
316
|
+
** filter: Filter name symbol, or filter instance.
|
317
|
+
** conditions: Search criteria.
|
318
|
+
|
319
|
+
=== AND search condition.
|
320
|
+
|
321
|
+
[source,ruby]
|
322
|
+
----
|
323
|
+
and( *filters )
|
324
|
+
----
|
325
|
+
|
326
|
+
* Result:
|
327
|
+
** Filter instance.
|
328
|
+
|
329
|
+
* Parameter:
|
330
|
+
** filters: Filter name symbol, or filter instance.
|
331
|
+
|
332
|
+
=== OR search condition.
|
333
|
+
|
334
|
+
[source,ruby]
|
335
|
+
----
|
336
|
+
or( *filters )
|
337
|
+
----
|
338
|
+
|
339
|
+
* Result:
|
340
|
+
** Filter instance.
|
341
|
+
|
342
|
+
* Parameter:
|
343
|
+
** filters: Field name symbol, or filter instance.
|
259
344
|
|
260
345
|
== Contributing
|
261
346
|
|
data/README.ja.adoc
CHANGED
@@ -60,9 +60,12 @@ class Book
|
|
60
60
|
field :style, String, ["A4","B5","A5","B6"]
|
61
61
|
field :price, Integer, (0..1_000_000)
|
62
62
|
field :page, Integer, proc{ page % 4 == 0 }
|
63
|
-
field :publish_at, Date, &proc{ Date.today }
|
64
63
|
field :isbn, String, proc{ isbn? }
|
65
|
-
field :lang, String,
|
64
|
+
field :lang, String, default: "en"
|
65
|
+
field :created_at, Time, create: proc{ Time.now }
|
66
|
+
field :updated_at, Time, update: proc{ Time.now }
|
67
|
+
|
68
|
+
filter :foobar, {title: /foobar/}
|
66
69
|
|
67
70
|
verify :strict
|
68
71
|
verify do
|
@@ -100,31 +103,33 @@ Book.create( **doc )
|
|
100
103
|
----
|
101
104
|
pp books = Book.all
|
102
105
|
|
103
|
-
p book = Book.
|
106
|
+
p book = Book.where( title: "title 1" ).first
|
104
107
|
|
105
|
-
books = Book.
|
108
|
+
books = Book.where( title: /title/ ).all
|
106
109
|
books.each do |book|
|
107
110
|
p book
|
108
111
|
end
|
109
112
|
|
110
|
-
Book.
|
113
|
+
Book.where( title: /title/ ).projection( _id: 0 ).each do |book|
|
111
114
|
p book
|
112
115
|
end
|
113
116
|
|
114
|
-
Book.
|
117
|
+
Book.where( price: (1..2000), style: ["A4","A5"] ).each do |book|
|
115
118
|
p book
|
116
119
|
end
|
117
120
|
|
118
|
-
filter1 = Book.
|
119
|
-
filter2 = Book.
|
120
|
-
filter3 = Book.
|
121
|
+
filter1 = Book.where( title: /title/ )
|
122
|
+
filter2 = Book.where( :foobar )
|
123
|
+
filter3 = Book.where( price: (1..2000) )
|
124
|
+
filter4 = Book.where( style: ["A4","A5"] )
|
125
|
+
|
121
126
|
Book.not( filter1 ).each do |book|
|
122
127
|
p book
|
123
128
|
end
|
124
|
-
Book.and( filter1,
|
129
|
+
Book.and( filter1, filter3 ).each do |book|
|
125
130
|
p book
|
126
131
|
end
|
127
|
-
Book.or(
|
132
|
+
Book.or( filter2, filter4 ).each do |book|
|
128
133
|
p book
|
129
134
|
end
|
130
135
|
|
@@ -132,14 +137,14 @@ Book.find( { title: /title/ }, { projection: {_id: 0} } ).each do |book|
|
|
132
137
|
p book
|
133
138
|
end
|
134
139
|
|
135
|
-
pp Book.
|
140
|
+
pp Book.where( title: /title/ )[0, 5].all
|
136
141
|
----
|
137
142
|
|
138
143
|
=== ドキュメント更新
|
139
144
|
|
140
145
|
[source,ruby]
|
141
146
|
----
|
142
|
-
book = Book.
|
147
|
+
book = Book.where( title: "title 1" ).first
|
143
148
|
book.title = "title 1 [update]"
|
144
149
|
book.save
|
145
150
|
----
|
@@ -148,7 +153,7 @@ book.save
|
|
148
153
|
|
149
154
|
[source,ruby]
|
150
155
|
----
|
151
|
-
book = Book.
|
156
|
+
book = Book.where( title: "title 1" ).first
|
152
157
|
book.delete
|
153
158
|
----
|
154
159
|
|
@@ -158,7 +163,7 @@ book.delete
|
|
158
163
|
|
159
164
|
[source,ruby]
|
160
165
|
----
|
161
|
-
Mongous.connect!( hosts_or_uri = nil, **
|
166
|
+
Mongous.connect!( hosts_or_uri = nil, **options )
|
162
167
|
----
|
163
168
|
|
164
169
|
* Result:
|
@@ -166,21 +171,21 @@ Mongous.connect!( hosts_or_uri = nil, **opts )
|
|
166
171
|
|
167
172
|
* Parameter:
|
168
173
|
** hosts_or_uri: ホスト配列または URI (default: ["localhost:21017"])
|
169
|
-
**
|
174
|
+
** options: オプション
|
170
175
|
*** file: データベース構成定義ファイルへのパス
|
171
176
|
*** mode: 実行モード (default: "development")
|
172
177
|
*** database: データベース名 (default: "test")
|
173
|
-
***
|
178
|
+
*** Mongo::Client.new のその他オプション引数
|
174
179
|
|
175
180
|
=== データベースに接続する
|
176
181
|
|
177
182
|
[source,ruby]
|
178
183
|
----
|
179
|
-
Mongous.connect( hosts_or_uri = nil, **
|
184
|
+
Mongous.connect( hosts_or_uri = nil, **options )
|
180
185
|
----
|
181
186
|
|
182
187
|
* Result:
|
183
|
-
** Mongo::Client
|
188
|
+
** Mongo::Client インスタンス.
|
184
189
|
|
185
190
|
=== ドキュメントの機能を取り入れる.
|
186
191
|
|
@@ -193,24 +198,37 @@ include Mongous::Document
|
|
193
198
|
|
194
199
|
[source,ruby]
|
195
200
|
----
|
196
|
-
|
201
|
+
self.client=( client )
|
197
202
|
----
|
198
203
|
|
199
204
|
* Result:
|
200
|
-
**
|
205
|
+
** Mongo::Client インスタンス.
|
206
|
+
|
207
|
+
* Parameter:
|
208
|
+
** client: Mongo::Client インスタンス.
|
209
|
+
|
210
|
+
=== 別のコレクションを割り当てる.
|
211
|
+
|
212
|
+
[source,ruby]
|
213
|
+
----
|
214
|
+
self.collection_name=( collection_name )
|
215
|
+
----
|
216
|
+
|
217
|
+
* Result:
|
218
|
+
** Collection name 文字列.
|
201
219
|
|
202
220
|
* Parameter:
|
203
|
-
**
|
221
|
+
** collection_name: コレクション名.
|
204
222
|
|
205
223
|
=== ドキュメントの要素を定義する.
|
206
224
|
|
207
225
|
[source,ruby]
|
208
226
|
----
|
209
|
-
field(
|
227
|
+
field( symbol, *attrs, **items )
|
210
228
|
----
|
211
229
|
|
212
230
|
* Parameter:
|
213
|
-
**
|
231
|
+
** symbol: 項目名
|
214
232
|
** attrs: 項目属性
|
215
233
|
*** Class: 項目検証用 Class
|
216
234
|
*** Proc: 項目検証用 Proc
|
@@ -218,17 +236,20 @@ field( label, *attrs, &block )
|
|
218
236
|
*** Array: 項目検証用配列
|
219
237
|
*** Symbol: 特別な指示子
|
220
238
|
**** must: ナル値でも空文字列でもない
|
221
|
-
**
|
239
|
+
** items: 保存時の操作.
|
240
|
+
*** default: 未定義のときの値または Proc.
|
241
|
+
*** create: ドキュメントを新規保存するときの値または Proc.
|
242
|
+
*** update: ドキュメントを更新するときの値または Proc.
|
222
243
|
|
223
244
|
=== 保存や代入の前にドキュメントの要素を検証する.
|
224
245
|
|
225
246
|
[source,ruby]
|
226
247
|
----
|
227
|
-
verify( *
|
248
|
+
verify( *directives, &block )
|
228
249
|
----
|
229
250
|
|
230
251
|
* Parameter:
|
231
|
-
**
|
252
|
+
** directives: 条件シンボル
|
232
253
|
*** strict: 定義済み項目名であることを検証する.
|
233
254
|
** block: 各項目値を検証して真偽を返す内容を記述する.
|
234
255
|
|
@@ -236,12 +257,12 @@ verify( *syms, &block )
|
|
236
257
|
|
237
258
|
[source,ruby]
|
238
259
|
----
|
239
|
-
index( *
|
260
|
+
index( *symbols, **options )
|
240
261
|
----
|
241
262
|
|
242
263
|
* Parameter:
|
243
|
-
**
|
244
|
-
**
|
264
|
+
** symbols: 項目名
|
265
|
+
** options: Mongo::Collection#indexes() のオプション.
|
245
266
|
|
246
267
|
=== 項目値がナル値でも空文字列でもないことを検証する.
|
247
268
|
|
@@ -256,6 +277,70 @@ having?( label )
|
|
256
277
|
* Parameter:
|
257
278
|
** label: メソッド呼び出しする項目名.
|
258
279
|
|
280
|
+
=== 検索条件に名前をつける.
|
281
|
+
|
282
|
+
[source,ruby]
|
283
|
+
----
|
284
|
+
filter( symbol, filter_or_cond )
|
285
|
+
----
|
286
|
+
|
287
|
+
* Parameter:
|
288
|
+
** symbol: 項目名
|
289
|
+
** filter_or_cond: フィルタまたは検索条件
|
290
|
+
|
291
|
+
=== 検索条件.
|
292
|
+
|
293
|
+
[source,ruby]
|
294
|
+
----
|
295
|
+
where( filter = nil, **conditions )
|
296
|
+
----
|
297
|
+
|
298
|
+
* Result:
|
299
|
+
** Filter instance.
|
300
|
+
|
301
|
+
* Parameter:
|
302
|
+
** filter: 項目名またはフィルタインスタンス
|
303
|
+
** conditions: 検索条件
|
304
|
+
|
305
|
+
=== 否定検索条件.
|
306
|
+
|
307
|
+
[source,ruby]
|
308
|
+
----
|
309
|
+
not( filter = nil, **conditions )
|
310
|
+
----
|
311
|
+
|
312
|
+
* Result:
|
313
|
+
** Filter instance.
|
314
|
+
|
315
|
+
* Parameter:
|
316
|
+
** filter: 項目名またはフィルタインスタンス
|
317
|
+
** conditions: 検索条件
|
318
|
+
|
319
|
+
=== 論理積検索条件.
|
320
|
+
|
321
|
+
[source,ruby]
|
322
|
+
----
|
323
|
+
and( *filters )
|
324
|
+
----
|
325
|
+
|
326
|
+
* Result:
|
327
|
+
** Filter instance.
|
328
|
+
|
329
|
+
* Parameter:
|
330
|
+
** filters: 項目名またはフィルタインスタンス
|
331
|
+
|
332
|
+
=== 論理和検索条件.
|
333
|
+
|
334
|
+
[source,ruby]
|
335
|
+
----
|
336
|
+
or( *filters )
|
337
|
+
----
|
338
|
+
|
339
|
+
* Result:
|
340
|
+
** Filter instance.
|
341
|
+
|
342
|
+
* Parameter:
|
343
|
+
** filters: 項目名またはフィルタインスタンス
|
259
344
|
|
260
345
|
== 貢献
|
261
346
|
|