MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

mongodb kiểm tra regex trên các trường từ một bộ sưu tập đến tất cả các trường trong bộ sưu tập khác

Không thể tham chiếu trường regex được lưu trữ trong tài liệu trong toán tử regex bên trong biểu thức so khớp.

Vì vậy, nó không thể được thực hiện trong bên mongo với cấu trúc hiện tại.

$lookup hoạt động tốt với điều kiện bình đẳng. Vì vậy, một giải pháp thay thế (tương tự như những gì Nic đã đề xuất) sẽ là cập nhật bộ sưu tập bài đăng của bạn để bao gồm một trường bổ sung được gọi là keywords (mảng các giá trị từ khóa mà nó có thể được tìm kiếm) cho mỗi tiêu đề.

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

Truy vấn trên sẽ thực hiện một cái gì đó như thế này (hoạt động từ 3.4).

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

Từ tài liệu

Có vẻ như các phiên bản trước đó (được thử nghiệm trên 3.2) sẽ chỉ khớp nếu mảng có cùng thứ tự, giá trị và độ dài của mảng giống nhau.

Đầu vào mẫu:

Người dùng

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

Bài đăng

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

Đầu ra mẫu:

[
  {
    "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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose Aggregate:giới hạn số lượng bản ghi trong nhóm $

  2. lược đồ mongo (nhúng so với tham chiếu)

  3. Nhóm và hiển thị dữ liệu

  4. Lập mô hình cho lược đồ bạn bè trong mongoose?

  5. Ngoại lệ tuần tự hóa Scala với Giá trị liệt kê