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

Điều gì sẽ xảy ra nếu áp dụng thư giãn cho một trường không có trong khi sử dụng tính năng tổng hợp trong mongoose

Không, nó không:

Đây là một ví dụ đơn giản:

> db.test.insert({a:[1]})
> db.test.insert({})

> db.test.aggregate({$unwind:'$a'})
{ "_id" : ObjectId("557362a17b97d77c38793c21"), "a" : 1 }
// no error -- but unwind only the document having the `a` field.

Nhưng:

> db.test.insert({a:2})
> db.test.aggregate({$unwind:'$a'})
// will result in error 15978:
// """Value at end of $unwind field path '$a' must be an Array,
//    but is a NumberDouble"""

Theo chỉnh sửa của bạn, nếu bạn cần giữ tài liệu bị thiếu trường để thư giãn, bạn có thể $project giá trị mặc định sử dụng $ifNull :

> db.test.find()
{ "_id" : ObjectId("557362a17b97d77c38793c21"), "a" : [ 1 ] }
{ "_id" : ObjectId("557362a57b97d77c38793c22") }

> db.test.aggregate([
    {$project: { a: { $ifNull: ['$a', [ null ]]}}},
    {$unwind: "$a"}
])
{ "_id" : ObjectId("557362a17b97d77c38793c21"), "a" : 1 }
{ "_id" : ObjectId("557362a57b97d77c38793c22"), "a" : null }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. đếm mongodb trong php

  2. Cập nhật MongoDB Collection:khởi tạo tài liệu với các giá trị mặc định

  3. MongoDB:Kiểm tra xem mảng lồng nhau có chứa mảng con không

  4. Mutex với MongoDB

  5. Flter cơ sở dữ liệu mongodb bằng cách sử dụng mongoose nodejs