sql >> データベース >  >> NoSQL >> MongoDB

文字列の1つで配列全体を取得します。配列は別の配列の中にあります。 Mongodb / Javascript

    集計クエリの使用:

    • $match 条件、ネストされた$ememMatchを配置します 2レベルの条件の場合
    • $reduce vid配列のループを繰り返すには、初期値[]を設定し、現在の配列の文字列かどうかを確認してから、現在の配列を返します。それ以外の場合は、初期値を返します。
    let searchString = "adfsdfasfd";
    db.collection.aggregate([
      {
        $match: {
          vid: { $elemMatch: { $elemMatch: { $in: [searchString] } } }
        }
      },
      {
        $addFields: {
          vid: {
            $reduce: {
              input: "$vid",
              initialValue: [],
              in: {
                $cond: [{ $in: [searchString, "$$this"] }, "$$this", "$$value"]
              }
            }
          }
        }
      }
    ])
    

    遊び場

    結果:

    [
      {
        "vid": [
          "adfsdfasfd",
          "this is some sample text",
          "https://example.com"
        ]
      }
    ]
    

    検索クエリの使用:

    • 上記と同じ条件を一致させる
    • 射影の場合、一致結果を取得しますが、同じネストされた配列にあります
    let searchString = "adfsdfasfd";
    db.collection.find(
      { vid: { $elemMatch: { $elemMatch: { $in: [searchString] } } } }
    ).project({ "vid.$": 1, _id: 0 }).toArray()
    

    遊び場

    結果:

    [
      {
        "vid": [
          [
            "adfsdfasfd",
            "this is some sample text",
            "https://example.com"
          ]
        ]
      }
    ]
    



    1. NodeJSMongo-Mongoose-動的コレクション名

    2. redisデータベースを変更するにはどうすればよいですか?

    3. geoNearによってサブドキュメントを取得します-MongoDB

    4. javascript APIを使用してGridFSで検索クエリを使用できますか?