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

Toán tử `$ eq` có hoạt động với ký hiệu chấm mảng không?

Không. $nodes.0 không phải là một biểu thức đúng trong toán tử tổng hợp $eq aggregation operator , khi được sử dụng với các trường mảng.

$eq aggregation operator có snytax sau:

{ $eq: [ <expression1>, <expression2> ] }

Bạn sẽ phải sử dụng $reduce cùng với $arrayElemAt để truy cập trường của bạn trong toán tử $ eq:

Truy vấn1

db.relations.find({
  $expr: {
    $eq: [
      {
        $reduce: {
          input: [
            {
              $arrayElemAt: [
                "$nodes",
                0
              ]
            }
          ],
          initialValue: false,
          in: {
            "$and": [
              {
                $eq: [
                  "$$this.type",
                  "User"
                ]
              },
              {
                $eq: [
                  "$$this.id",
                  UUID("dc20f7c7-bd45-4fc1-9eb4-3604428fa551")
                ]
              }
            ]
          }
        }
      },
      true
    ]
  }
})

Sân chơi

Ngoài ra, sử dụng toán tử $ eq { <field>: { $eq: <value> } }

Truy vấn2

db.relations.find({
  "$and": [
    {
      "nodes.0.type": {
        $eq: "User"
      }
    },
    {
      "nodes.0.id": {
        $eq: UUID("dc20f7c7-bd45-4fc1-9eb4-3604428fa551")
      }
    }
  ]
})

Sân chơi MongoDB

Nếu bạn muốn thực hiện IXSCAN, bạn có thể sử dụng Query2 . Bạn phải tạo các chỉ mục sau:

db.relations.ensureIndex({"nodes.0.id":1})
db.relations.ensureIndex({"nodes.0.type":1})



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Trình điều khiển Mongodb C # chỉ trả về các tài liệu con phù hợp trong mảng

  2. Node MongoDb {err:'kết nối với [127.0.0.1:27017] đã hết thời gian chờ'}

  3. Mongoid w / Rails, attr_accessible -> Không tìm thấy phương pháp nào

  4. render_template với nhiều biến

  5. Làm cách nào tôi có thể thay đổi kích thước bộ sưu tập giới hạn mongodb mà không làm mất dữ liệu?