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

mongodbは、あるコレクションのフィールドから他のコレクションのすべてのフィールドの正規表現をチェックします

    一致式内の正規表現演算子でドキュメントに格納されている正規表現フィールドを参照することはできません。

    そのため、現在の構造ではモンゴ側では実行できません。

    $lookup 平等条件でうまく機能します。したがって、1つの代替手段(Nicが提案したものと同様)は、投稿コレクションを更新して、keywordsと呼ばれる追加のフィールドを含めることです。 (検索可能なキーワード値の配列)各タイトル。

    db.users.aggregate([
       {$lookup: {
              from: "posts",
              localField: "userregex",
              foreignField: "keywords",
              as: "posts"
            }
        }
    ])
    

    上記のクエリは次のようになります(3.4から機能します)。

    keywords: { $in: [ userregex.elem1, userregex.elem2, ... ] }.
    

    ドキュメントから

    以前のバージョン(3.2でテスト済み)は、配列の順序、値、配列の長さが同じである場合にのみ一致するようです。

    サンプル入力:

    ユーザー

    db.users.insertMany([
      {
        "name": "James",
        "userregex": [
          "another",
          "here"
        ]
      },
      {
        "name": "John",
        "userregex": [
          "another",
          "string"
        ]
      }
    ])
    

    投稿

    db.posts.insertMany([
      {
        "title": "a string here",
        "keyword": [
          "here"
        ]
      },
      {
        "title": "another string here",
        "keywords": [
          "another",
          "here"
        ]
      },
      {
        "title": "one string here",
        "keywords": [
          "string"
        ]
      }
    ])
    

    サンプル出力:

    [
      {
        "name": "James",
        "userregex": [
          "another",
          "here"
        ],
        "posts": [
          {
            "title": "another string here",
            "keywords": [
              "another",
              "here"
            ]
          },
          {
            "title": "a string here",
            "keywords": [
              "here"
            ]
          }
        ]
      },
      {
        "name": "John",
        "userregex": [
          "another",
          "string"
        ],
        "posts": [
          {
            "title": "another string here",
            "keywords": [
              "another",
              "here"
            ]
          },
          {
            "title": "one string here",
            "keywords": [
              "string"
            ]
          }
        ]
      }
    ]
    


    1. MongoDB全文検索-一致する単語と正確なフレーズ

    2. 自動MongoDBバックアップ

    3. nodeJSdockerコンテナをmongoDBに接続する方法

    4. マングースドキュメント。保存が機能しない