Hướng dẫn match multiple fields mongodb - khớp nhiều trường mongodb

Vì vậy, tôi đang cố gắng làm một cái gì đó mà tôi có thể nhóm các trường MongoDB để kiểm tra.

Show

Cho tôi có cấu trúc dữ liệu sau:

{
//Some other data fields
created: date,
lastLogin: date,
someSubObject: {
    anotherDate: date,
    evenAnotherDate: date
}

Về những điều này, tôi muốn thực hiện một tấm séc như thế này:

collection.aggregate([
{
    $match: {
        "created": {
            $lt: lastWeekDate
        },
        "someSubObject.anotherDate": {
            $lt: lastWeekDate
        },
        "lastLogin": {
            $lt ...

Có khả năng nhóm các lĩnh vực và làm điều gì đó như

$match: {
    [field1, field2, field3]: {
        $lt: lastWeekDate
    }
}

Tài liệu về nhà → Hướng dẫn sử dụng MongoDBMongoDB Manual

Trên trang này

  • Trả lại tất cả các trường trong các tài liệu phù hợp
  • Trả về các trường được chỉ định và trường _id chỉ
  • Triệt tiêu trường _id
  • Trả lại tất cả trừ các trường bị loại trừ
  • Trả về các trường cụ thể trong các tài liệu nhúng
  • Triệt tiêu các trường cụ thể trong các tài liệu nhúng
  • Chiếu trên các tài liệu nhúng trong một mảng
  • Các yếu tố mảng cụ thể của dự án trong mảng được trả về
  • Cân nhắc bổ sung


Sử dụng menu chọn ngôn ngữ của bạn ở phía trên bên phải để đặt ngôn ngữ của các ví dụ sau.Select your language drop-down menu in the upper-right to set the language of the following examples.


Theo mặc định, các truy vấn trong MongoDB trả về tất cả các trường trong các tài liệu phù hợp. Để hạn chế lượng dữ liệu mà MongoDB gửi đến các ứng dụng, bạn có thể bao gồm một tài liệu dự báo để chỉ định hoặc hạn chế các trường để trả về.

Ví dụ sau trả về tất cả các trường từ tất cả các tài liệu trong bộ sưu tập inventory trong đó status bằng

collection.aggregate([
{
    $match: {
        "created": {
            $lt: lastWeekDate
        },
        "someSubObject.anotherDate": {
            $lt: lastWeekDate
        },
        "lastLogin": {
            $lt ...
0:

Hoạt động tương ứng với câu lệnh SQL sau:

SELECT * from inventory WHERE status = "A"

Một phép chiếu có thể bao gồm rõ ràng một số trường bằng cách đặt

collection.aggregate([
{
    $match: {
        "created": {
            $lt: lastWeekDate
        },
        "someSubObject.anotherDate": {
            $lt: lastWeekDate
        },
        "lastLogin": {
            $lt ...
1 thành
collection.aggregate([
{
    $match: {
        "created": {
            $lt: lastWeekDate
        },
        "someSubObject.anotherDate": {
            $lt: lastWeekDate
        },
        "lastLogin": {
            $lt ...
2 trong tài liệu trình chiếu. Hoạt động sau trả về tất cả các tài liệu phù hợp với truy vấn. Trong kết quả được đặt, chỉ có
collection.aggregate([
{
    $match: {
        "created": {
            $lt: lastWeekDate
        },
        "someSubObject.anotherDate": {
            $lt: lastWeekDate
        },
        "lastLogin": {
            $lt ...
3, status và theo mặc định, các trường _id trả về trong các tài liệu phù hợp.

Hoạt động tương ứng với câu lệnh SQL sau:

SELECT _id, item, status from inventory WHERE status = "A"

Một phép chiếu có thể bao gồm rõ ràng một số trường bằng cách đặt

collection.aggregate([
{
    $match: {
        "created": {
            $lt: lastWeekDate
        },
        "someSubObject.anotherDate": {
            $lt: lastWeekDate
        },
        "lastLogin": {
            $lt ...
1 thành
collection.aggregate([
{
    $match: {
        "created": {
            $lt: lastWeekDate
        },
        "someSubObject.anotherDate": {
            $lt: lastWeekDate
        },
        "lastLogin": {
            $lt ...
2 trong tài liệu trình chiếu. Hoạt động sau trả về tất cả các tài liệu phù hợp với truy vấn. Trong kết quả được đặt, chỉ có
collection.aggregate([
{
    $match: {
        "created": {
            $lt: lastWeekDate
        },
        "someSubObject.anotherDate": {
            $lt: lastWeekDate
        },
        "lastLogin": {
            $lt ...
3, status và theo mặc định, các trường _id trả về trong các tài liệu phù hợp.

Hoạt động tương ứng với câu lệnh SQL sau:

SELECT item, status from inventory WHERE status = "A"

Một phép chiếu có thể bao gồm rõ ràng một số trường bằng cách đặt collection.aggregate([ { $match: { "created": { $lt: lastWeekDate }, "someSubObject.anotherDate": { $lt: lastWeekDate }, "lastLogin": { $lt ... 1 thành collection.aggregate([ { $match: { "created": { $lt: lastWeekDate }, "someSubObject.anotherDate": { $lt: lastWeekDate }, "lastLogin": { $lt ... 2 trong tài liệu trình chiếu. Hoạt động sau trả về tất cả các tài liệu phù hợp với truy vấn. Trong kết quả được đặt, chỉ có collection.aggregate([ { $match: { "created": { $lt: lastWeekDate }, "someSubObject.anotherDate": { $lt: lastWeekDate }, "lastLogin": { $lt ... 3, status và theo mặc định, các trường _id trả về trong các tài liệu phù hợp.

Bạn có thể xóa trường _id khỏi kết quả bằng cách đặt nó thành

collection.aggregate([
{
    $match: {
        "created": {
            $lt: lastWeekDate
        },
        "someSubObject.anotherDate": {
            $lt: lastWeekDate
        },
        "lastLogin": {
            $lt ...
7 trong phép chiếu, như trong ví dụ sau:

Ghi chú

Một phép chiếu có thể bao gồm rõ ràng một số trường bằng cách đặt collection.aggregate([ { $match: { "created": { $lt: lastWeekDate }, "someSubObject.anotherDate": { $lt: lastWeekDate }, "lastLogin": { $lt ... 1 thành collection.aggregate([ { $match: { "created": { $lt: lastWeekDate }, "someSubObject.anotherDate": { $lt: lastWeekDate }, "lastLogin": { $lt ... 2 trong tài liệu trình chiếu. Hoạt động sau trả về tất cả các tài liệu phù hợp với truy vấn. Trong kết quả được đặt, chỉ có collection.aggregate([ { $match: { "created": { $lt: lastWeekDate }, "someSubObject.anotherDate": { $lt: lastWeekDate }, "lastLogin": { $lt ... 3, status và theo mặc định, các trường _id trả về trong các tài liệu phù hợp.

Bạn có thể xóa trường _id khỏi kết quả bằng cách đặt nó thành

collection.aggregate([
{
    $match: {
        "created": {
            $lt: lastWeekDate
        },
        "someSubObject.anotherDate": {
            $lt: lastWeekDate
        },
        "lastLogin": {
            $lt ...
7 trong phép chiếu, như trong ví dụ sau:

Ghi chú

Ngoại trừ trường _id, bạn không thể kết hợp các câu lệnh bao gồm và loại trừ trong các tài liệu chiếu.

  • Trường _id (được trả về theo mặc định),

  • Trường

    collection.aggregate([
    {
        $match: {
            "created": {
                $lt: lastWeekDate
            },
            "someSubObject.anotherDate": {
                $lt: lastWeekDate
            },
            "lastLogin": {
                $lt ...
    
    3,

  • Trường status,

  • Trường

    SELECT * from inventory WHERE status = "A"

    8 trong các tài liệu được nhúng trong mảng
    $match: {
        [field1, field2, field3]: {
            $lt: lastWeekDate
        }
    }
    
    0.

Bắt đầu từ MongoDB 4.4, MongoDB thực thi các hạn chế bổ sung liên quan đến các dự đoán. Xem các hạn chế dự đoán để biết chi tiết.

Mẹo

Bạn có thể ngăn chặn các trường cụ thể trong một tài liệu nhúng. Sử dụng ký hiệu dấu chấm để tham khảo trường nhúng trong tài liệu chiếu và được đặt thành

collection.aggregate([
{
    $match: {
        "created": {
            $lt: lastWeekDate
        },
        "someSubObject.anotherDate": {
            $lt: lastWeekDate
        },
        "lastLogin": {
            $lt ...
7.

Ví dụ sau đây chỉ định một hình chiếu để loại trừ trường

$match: {
    [field1, field2, field3]: {
        $lt: lastWeekDate
    }
}
6 bên trong tài liệu
$match: {
    [field1, field2, field3]: {
        $lt: lastWeekDate
    }
}
7. Tất cả các trường khác được trả về trong các tài liệu phù hợp:

Bắt đầu từ MongoDB 4.4, bạn cũng có thể chỉ định các trường được nhúng bằng mẫu lồng nhau, ví dụ:

SELECT * from inventory WHERE status = "A"

4.

Sử dụng ký hiệu DOT để dự án các trường cụ thể bên trong các tài liệu được nhúng trong một mảng.

Ví dụ sau đây chỉ định một dự đoán để trả về:

  • Trường _id (được trả về theo mặc định),

  • Trường

    collection.aggregate([
    {
        $match: {
            "created": {
                $lt: lastWeekDate
            },
            "someSubObject.anotherDate": {
                $lt: lastWeekDate
            },
            "lastLogin": {
                $lt ...
    
    3,

  • Trường status,

  • Trường

    SELECT * from inventory WHERE status = "A"

    8 trong các tài liệu được nhúng trong mảng
    $match: {
        [field1, field2, field3]: {
            $lt: lastWeekDate
        }
    }
    
    0.

Bắt đầu từ MongoDB 4.4, MongoDB thực thi các hạn chế bổ sung liên quan đến các dự đoán. Xem các hạn chế dự đoán để biết chi tiết.

Mẹo