次のドキュメント定義があります(ルビーです)
class Block
include Mongoid::Document
field :index, type: Integer # index 0,1,..
field :codes, type: Array #[A, B, C,... ]
embedded_in :Video
end
class Video
include Mongoid::Document
field :name, type: String
embeds_many :blocks, :order => :index.asc
end
プロパティに一致するクエリを実行したいのですvideo.blocks.codes
が、埋め込みドキュメントの配列プロパティです。主に2種類のクエリを実行したい:
- null 以外/空でない
codes
配列を持つブロックはいくつ存在しますか? - コード配列が特定の位置の特定の文字列と一致するブロックはいくつありますか?
一致させようとしているデータの例を次に示します。
video#1
blocks: [{index: 1, codes:["a","g","c"]}, {index: 2, codes: [] }]
video#2
blocks: [{index: 1, codes:["x","b","d", "e"]}, {index: 2, codes: ["x","b"] }]
たとえば、空でないコード配列のないブロックの数(答えは3 つのブロック) と、2 番目の位置 (インデックス 1) にあるブロックの数b
(答えは2 つ) を知りたいです。
私はmongoid
ドライバーを使用しているので、理想的にはクエリでドライバーを使用しますが、プレーンモンゴは問題ありません。ありがとう!