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

Tên trường FieldPath không được chứa '.' khi cố gắng sử dụng AGGREGATE

Bạn có thể sử dụng truy vấn dưới đây

Nếu bạn đang sử dụng $expr thì bạn có thể dễ dàng sử dụng toán tử tổng hợp bên trong nó. Vì vậy, thay vì sử dụng .dot ký hiệu để tìm phần tử, bạn có thể sử dụng $arrayElemAt nhà điều hành cung cấp cho bạn cơ sở để chọn phần tử bạn muốn.

db.table.aggregate([
  { '$match': {
    '$expr': {
      '$and': [
        { '$eq': [{ '$size': '$events' }, 4] },
        { '$lt': [{ '$arrayElemAt': ['$events.updated', 0] }, '2019-05-05'] }
      ]
    }
  }}
])

Hoặc theo cách bạn đang cố gắng làm

db.collection.aggregate([
  { "$match": {
    "events.0.updated": { "$lt": "2019-05-05" },
    "$expr": { "$eq": [{ "$size": "$events" }, 4] }
  }}
])

Bạn có thể kiểm tra $expr hành vi tại đây




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Tìm các đối tượng có tên trường bắt đầu bằng

  2. MongoDB C ++, Cách thêm giá trị ISODate khi chèn

  3. Cách sử dụng $ setDifference trong mảng &đối tượng bằng Mongo DB

  4. Mongodb:Tác động đến hiệu suất của $ HINT

  5. Trong Mongodb, làm cách nào để kiểm tra xem tất cả các tài liệu có phải là duy nhất cho một giá trị không?