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

Tùy chọn chiếu để trả về chiều dài / kích thước của trường

.find() không "thay đổi" các tài liệu được trả lại dưới bất kỳ hình thức nào. Bạn chỉ có thể "bao gồm" hoặc "loại trừ" trong phép chiếu.

Những thứ duy nhất "thay đổi" là .aggregate() hoặc .mapReduce() .

Đối với .aggregate() , yêu cầu MongoDB 3.4 cho $strLenCP hoặc $strLenBytes , nhưng thông thường ý bạn là cái cũ:

db.documents.aggregate([
  { "$project": {
    "bodyLength": { "$strLenCP": "$body" }
  }}
])

Đối với .mapReduce()

db.documents.mapReduce(
  function() {
    emit(this._id, this.body.length)
  },
  function() { },
  { "out": { "inline": 1 } }
);

Và thực tế trong trường hợp sau, bạn cũng có thể lặp lại con trỏ và có thể cần phải làm vậy trừ khi bộ sưu tập đủ nhỏ hoặc bạn thực sự có thể xuất sang bộ sưu tập khác.

$size toán tử bạn đang cố gắng sử dụng chỉ áp dụng cho "mảng" để trả về số lượng mục nhập hiện có. Và một lần nữa, nó chỉ hợp lệ để sử dụng với .aggregate() phương pháp.

Nếu bạn muốn bỏ qua các ký tự như space trong một chuỗi thì $split $reduce với $concat có thể được áp dụng:

db.documents.aggregate([
  { "$addFields": {
    "bodyLength": {
      "$strLenCP": {
        "$reduce": {
          "input": { "$split": [ "$name", " "] },
          "initialValue": "",
          "in": { "$concat": [ "$$value", "$$this" ] }
        }
      }
    }
  }}
])

Hoặc một lần nữa với mapReduce() :

db.documents.mapReduce(
  function() {
    emit(this._id, "".concat.apply(this.body.split(" ")).length)
    // Or even
    // emit(this._id, this.body.split(" ").reduce((o,e) => o.concat(e),"").length)
  },
  function() { },
  { "out": { "inline": 1 } }
);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoError:Không thể trích xuất khóa địa lý từ đối tượng có Loại:Điểm

  2. truy vấn không gian địa lý mongomapper 'trong'

  3. Mongodb không thể chạy bản đồ giảm mà không có công cụ js

  4. Truy vấn có nguồn gốc không hoạt động với DBRef

  5. cách định cấu hình các trường debezium được gửi trên các sự kiện cập nhật (trình kết nối mongo)