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

Trả về kết quả dưới dạng Chỉ một mảng Giá trị

Bạn có thể map() . Sử dụng Array.map() với mongoose vì nó trả về một mảng và tốt hơn hết bạn chỉ cần sử dụng $group _id so với việc sử dụng $push

const subCategory = (await SubCategory.aggregate([
  { '$match': { category: "dining" } },
  { '$group': { '_id': "$name" } }
])).map(({ _id }) => _id);

Hoặc với Cursor.map() nếu sử dụng Collection bên dưới từ trình điều khiển cốt lõi:

const subCategory = await SubCategory.collection.aggregate([
  { '$match': { category: "dining" } },
  { '$group': { '_id': "$name"  } }
]).map(({ _id }) => _id).toArray();

Tương tự với find() nếu bạn không muốn kết quả "khác biệt":

const subCategory = (await Subcategory.find({ category: "dining" }))
  .map(({ name }) => name);

Hoặc với Cursor.map()

const subCategory = await Subcategory.collection.find({ category: "dining" })
  .map(({ name }) => name).toArray();

Bạn cũng có thể sử dụng distinct() , về cơ bản thực hiện một biến thể của quy trình tổng hợp và map() "under the hood" ("chỉ trả về phần trường" chứ không phải phương thức tổng hợp riêng biệt):

const subCategory = await SubCategory.distinct("name",{ category: "dining" });

Bản thân MongoDB sẽ không trả về bất kỳ thứ gì khác ngoài Tài liệu BSON và một chuỗi đơn giản KHÔNG phải là Tài liệu BSON.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để bạn đặt một tệp hình ảnh trong một đối tượng json?

  2. MongoDB $ strLenCP

  3. Không thể giải mã hóa PyMongo ObjectId từ JSON

  4. DeprecationWarning:Nghe các sự kiện trên lớp Db đã không còn được dùng nữa và sẽ bị loại bỏ trong phiên bản chính tiếp theo

  5. Khuôn khổ tổng hợp MongoDB $ group có thể trả về một mảng giá trị không?