0

私はこの構造を持っているとしましょう

{
    "_id" : "4klhrj5hZ",
    "name" : "asdf",
    "startTime" : ISODate("2016-09-20T22:22:08.082Z"),
    "columns" : [
        {
            "_id" : ObjectId("57e1b69087ceb4392ebdf7f4"),
            "createdAt" : ISODate("2016-09-20T22:22:08.088Z"),
            "rows" : [
                {
                    "value" : "adf",
                    "_id" : ObjectId("57e1b7867598bd39a72876ef")
                }
            ]
        },
        {
            "_id" : ObjectId("57e1b69087ceb4392ebdf7f3"),
            "createdAt" : ISODate("2016-09-20T22:22:08.088Z"),
            "rows" : [
                {
                    "value" : "we",
                    "_id" : ObjectId("57e1b69287ceb4392ebdf7f5"),
            ]
        },
        {
            "_id" : ObjectId("57e1b69087ceb4392ebdf7f2"),
            "createdAt" : ISODate("2016-09-20T22:22:08.086Z"),
            "rows" : [
                {
                    "value" : "asdf",
                    "_id" : ObjectId("57e1b7be7598bd39a72876f0")
                }
            ]
        }
    ]
}

最初に列の配列があり、次に各列を持つ行の配列があります。配列の配列... 配列のすべての空の配列を含む最上位ドキュメントの数を知るために、カウント クエリを作成しようとしています。したがって、この例ではcolumns[0-2].rows.length === 0、列の長さに制限はありません。私が見た例から私を最もつまずかせているのは、ネストされた配列を動的に実行し、それを参照していないことです

columns.0.rows

ありがとう!

編集:明確化 ここに明確にするのに役立つマングーススキーマがあります

var RowSchema = new Schema({
  value: String,
  createdAt:{
    type: Date,
    'default': Date.now
  }
});

var ColumnSchema = new Schema({
  rows: [RowSchema],
  createdAt:{
    type: Date,
    'default': Date.now
  }
});

var ItemSchema = new Schema({
  _id: {
    type: String,
    unique: true,
    'default': shortid.generate
  },
  name: String,
  columns: [ColumnSchema],
  createdAt:{
    type: Date,
    'default': Date.now
  }
})

クエリを実行して、すべてItemの列にゼロ行を含むすべての を検索したいと考えています。だから私は空の配列を見つける方法を知っています:

Item.find({ columns: { $exists: true, $eq: [] } })

しかし、私は次のようなものが欲しい

Item.find({ 'columns.rows': { $exists: true, $eq: [] } })

不明瞭な説明で申し訳ありませんが、それに夢中になりすぎて、適切なコンテキストを設定するのを忘れることがあります。ありがとう。

4

0 に答える 0