Hướng dẫn mongodb match on two fields - mongodb khớp trên hai trường

Tôi có một tài liệu như dưới đây:

{
  "user_id": NumberLong(1),
  "updated_at": ISODate("2016-11-17T09:35:56.200Z"),
  "created_at": ISODate("2016-11-17T09:35:07.981Z"),
  "banners": {
    "normal_x970h90": "/images/banners/4/582d79cb3aef567d64621be9/photo-1440700265116-fe3f91810d72.jpg",
    "normal_x468h60": "/images/banners/4/582d79cb3aef567d64621be9/photo-1433354359170-23a4ae7338c6.jpg",
    "normal_x120h600": "/images/banners/4/582d79cb3aef567d64621be9/photo-1452570053594-1b985d6ea890.jpg"
  },
  "name": "jghjghjghj",
  "budget": "2000",
  "plan": null,
  "daily_budget": "232323",
  "daily_budget_auto": "",
  "href": "qls2.ir",
  "targets": {
    "cats": [
      "fun",
      "news"
    ],
    "region": "inIran",
    "iran_states": null,
    "os": "all",
    "gold_network": true,
    "dont_show_between_1_n_8": true
  },
  "payment": {
    "bank": "mellat",
    "tax": "add"
  },
  "click_cost": "102000",
  "status": null
}

Tôi muốn kiểm tra xem budget có thấp hơn click_cost không trong khi tôi đang kiểm tra một số tham số khác trong truy vấn của mình:

db.bcamp.aggregate(
    [
        {
            $match:{
                $and: [ 
                    {"targets.cats":{
                        "$in" : ["all"]
                        }
                    },

                    {"banners.normal_x970h90":{
                        "$exists":true
                        }
                    },

                    {"href": {
                        $nin: ["qls.ir"]
                        }
                    }
                ]
            }
        }
    ]).pretty();

Tôi đã thử so sánh phương thức như:

db.bcamp.aggregate(
    [
        {$project: {ab: {$cmp: ['$budget','$clickcost']}}},
        {$match: {ab:{$gt:1}}}
    ]).pretty();

Nhưng tôi đã nhận được kết quả sai, nó luôn trả về 4 tài liệu mà ngân sách của họ có thể hoặc không phải là người nặng hơn click_cost, điều đó có nghĩa là nó lấy dữ liệu sai.

Làm thế nào tôi có thể thêm so sánh đó với đường ống MongoDB của tôi?

MongoDB phù hợp với nhiều trường với các ví dụ mã

Trong hướng dẫn này, chúng tôi sẽ cố gắng tìm giải pháp cho MongoDB phù hợp với nhiều trường thông qua lập trình. Mã sau đây minh họa điều này.

$match:
{
	$and: [
    {'ExtraFields.value': {$in: ["A52A2A"]}}, 
    {'ExtraFields.fieldID': ObjectId("5535627631efa0843554b0ea")}
    ]
}

Bạn sẽ thấy một số ví dụ về các cách khác nhau để giải quyết vấn đề của MongoDB phù hợp với nhiều vấn đề trong bài viết này.

db.collection2.aggregate([
       {
          $lookup: {
             from: "collection1",
             let: {
                firstUser: "$user1",
                secondUser: "$user2"
             },
             pipeline: [
                {
                   $match: {
                      $expr: {
                         $and: [
                            {
                               $eq: [
                                  "$user1",
                                  "$$firstUser"
                               ]
                            },
                            {
                               $eq: [
                                  "$user2",
                                  "$$secondUser"
                               ]
                            }
                         ]
                      }
                   }
                }
             ],
             as: "result"
          }
       },
       {
          $replaceRoot: {
             newRoot: {
                $mergeObjects:[
                   {
                      $arrayElemAt: [
                         "$result",
                         0
                      ]
                   },
                   {
                      percent1: "$$ROOT.percent1"
                   }
                ]
             }
          }
       }
    ]
)

Sử dụng nhiều ví dụ, chúng tôi đã học được cách giải quyết vấn đề của MongoDB phù hợp với nhiều trường.

Làm cách nào để khớp với nhiều trường trong MongoDB?

“MongoDB phù hợp với nhiều trường” mã câu trả lời

  • $match:
  • {
  • $ và: [
  • {'Extrafields.value': {$ in: ["A52a2a"]}},
  • {'Extrafields.FieldId': ObjectID ("5535627631EFA0843554B0EA")}
  • ]
  • }

Làm cách nào để truy vấn nhiều mục trong MongoDB?

Truy vấn MongoDB Tìm nhiều giá trị.

  • Nhấp vào nút Tùy chọn thả xuống ở phía bên trái của nút Tìm.
  • Và nó cung cấp nhiều tùy chọn khác nhau có thể thực hiện bộ lọc, dự án, sắp xếp và đối chiếu.
  • Bây giờ, chúng tôi xác định sau hai truy vấn và tìm nhiều giá trị từ các tài liệu theo điều kiện.

$ Match làm gì trong MongoDB?

Toán tử MongoDB $ MAT

Làm thế nào để tôi viết nhiều điều kiện trong MongoDB?

Trong MongoDB, chúng ta có thể áp dụng nhiều điều kiện bằng cách sử dụng và toán tử. Bằng cách áp dụng và hoạt động, chúng tôi sẽ chọn tất cả các tài liệu đáp ứng tất cả các biểu thức điều kiện. Chúng ta có thể sử dụng toán tử này trong các phương thức như find (), update (), v.v. theo yêu cầu.24-sept-2021

Làm cách nào để cập nhật nhiều trường trong MongoDB?

Trong MongoDB, bạn có thể cập nhật nhiều tài liệu trong bộ sưu tập bằng DB. thu thập. Phương thức Updatemany ().

  • Phương thức Updatemany () có thể được sử dụng trong các giao dịch đa tài liệu.
  • Khi bạn cập nhật tài liệu của mình, giá trị của trường _ID không thay đổi.
  • Nó cũng thêm các trường mới trong các tài liệu.

$ Expr trong MongoDB là gì?

$ expr có thể xây dựng các biểu thức truy vấn so sánh các trường từ cùng một tài liệu trong giai đoạn Match $. Nếu giai đoạn $ Match là một phần của giai đoạn tra cứu $, $ expr có thể so sánh các trường bằng các biến LET. Xem thực hiện nhiều lần tham gia và một truy vấn con tương quan với $ Tra cứu cho một ví dụ.

Làm cách nào để truy vấn một loạt các đối tượng trong MongoDB?

Để tìm kiếm mảng đối tượng trong MongoDB, bạn có thể sử dụng toán tử elemmatch $. Toán tử này cho phép chúng tôi tìm kiếm nhiều hơn một thành phần từ một đối tượng mảng.30-jul-2019

Làm cách nào để tìm kiếm một lĩnh vực cụ thể trong MongoDB?

Bạn có thể chọn một trường duy nhất trong MongoDB bằng cú pháp sau: DB. YourCollectionName. find ({"yourFieldName": yourValue}, {"yoMingleingFieldName": 1, _id: 0}); 30-jul-2019

Làm thế nào để tôi sử dụng $ trong MongoDB?

Sử dụng toán tử $ trong để khớp các giá trị truy vấn này chọn tất cả các tài liệu trong bộ sưu tập kiểm kê trong đó giá trị của trường số lượng là 5 hoặc 15. Mặc dù bạn có thể viết truy vấn này bằng cách sử dụng toán tử hoặc toán tử, hãy sử dụng toán tử $ trong toán tử thay vì $ hoặc toán tử khi thực hiện kiểm tra bình đẳng trên cùng một trường.

Tập hợp MongoDB có nhanh không?

Trên các bộ sưu tập lớn hàng triệu tài liệu, tập hợp của MongoDB được chứng minh là tồi tệ hơn nhiều so với Elaticsearch. Hiệu suất xấu đi với kích thước thu thập khi MongoDB bắt đầu sử dụng đĩa do RAM hệ thống hạn chế. Giai đoạn tra cứu $ được sử dụng mà không có chỉ mục có thể rất chậm.04-NOV-2021

$ Expr trong MongoDB là gì?

$ expr có thể xây dựng các biểu thức truy vấn so sánh các trường từ cùng một tài liệu trong giai đoạn Match $. Nếu giai đoạn $ Match là một phần của giai đoạn tra cứu $, $ expr có thể so sánh các trường bằng các biến LET. Xem thực hiện nhiều lần tham gia và một truy vấn con tương quan với $ Tra cứu cho một ví dụ.build query expressions that compare fields from the same document in a $match stage. If the $match stage is part of a $lookup stage, $expr can compare fields using let variables. See Perform Multiple Joins and a Correlated Subquery with $lookup for an example.

Chúng ta có thể tham gia hai bảng trong MongoDB không?

Hoạt động tham gia có thể được thực hiện trong cơ sở dữ liệu SQL giữa hai bảng bên trong cùng một cơ sở dữ liệu hoặc khác nhau.Mặt khác, các hoạt động tham gia trong MongoDB có thể được thực hiện giữa các bộ sưu tập được thực hiện trong một cơ sở dữ liệu tương tự, mặc dù trường hợp này rất khác nhau.JOIN operations in MongoDB can be performed between collections implemented in a similar database, although the case is varied.

Việc sử dụng nhà điều hành nhóm và nhóm trong MongoDB là gì?

Sân khấu $ Match lọc các tài liệu chỉ để chuyển các tài liệu từ năm 2014 sang giai đoạn tiếp theo.Giai đoạn thứ hai: Các nhóm nhóm $ nhóm các tài liệu theo ngày và tính toán tổng số tiền bán, số lượng trung bình và tổng số tài liệu trong mỗi nhóm.. Second Stage: The $group stage groups the documents by date and calculates the total sale amount, average quantity, and total count of the documents in each group.

Giai đoạn tổng hợp $ khớp có thể được sử dụng để làm gì?

Giai đoạn tổng hợp này hoạt động như một phát hiện.Nó sẽ lọc các tài liệu phù hợp với truy vấn được cung cấp.Sử dụng $ khớp sớm trong đường ống có thể cải thiện hiệu suất vì nó giới hạn số lượng tài liệu mà các giai đoạn tiếp theo phải xử lý.filter documents that match the query provided. Using $match early in the pipeline can improve performance since it limits the number of documents the next stages must process.