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

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

Bạn cần sửa tập hợp thứ hai đó và nhận tất cả UPIDs như một mảng. Để đạt được điều đó, bạn có thể sử dụng $ cond và dựa trên $ type trả về một mảng hoặc sử dụng $ objectToArray để chạy chuyển đổi, hãy thử:

db.Groups.aggregate([
    {
        $project: {
            students: {
                $cond: [ 
                    { $eq: [ { $type: "$members.regularStudent" }, "array" ] },
                    "$members.regularStudent",
                    { $map: { input: { "$objectToArray": "$members.regularStudent" }, as: "x", in: "$$x.v" } }
                ]
            }
        }
    },
    {
        $unwind: "$students"
    },
    {
        $group: {
            _id: null,
            UPIDs: { $addToSet: "$students" }
        }
    },
    {
        $project: {
            members: {
                $setDifference: [ userProductUPIDs , "$UPIDs" ]
            },
            _id : 0
        }
    }
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách quản lý mẫu cấu hình cho cơ sở dữ liệu của bạn với ClusterControl

  2. MongoDB $ trừ

  3. Xóa một đối tượng khỏi một mảng bên trong Bộ sưu tập

  4. cách cập nhật đối tượng lồng nhau của tài liệu mongoose chỉ cho các khóa được cung cấp

  5. danh sách thanh lịch của các mục con lặp lại