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

MongoDb $ addFields và $ match

Lần tới, vui lòng thêm một mẫu tài liệu của bạn để mọi người có thể tái tạo vấn đề của bạn. Đã nói rằng tôi không thấy vấn đề của bạn ở đâu. Tôi đã tạo một số dữ liệu để tái tạo usecase của bạn. Vì vậy, tôi đã thêm tài liệu sau:

{ 
    "_id" : ObjectId("5a0d5d376c9b762a7c035ec4"), 
    "projectName" : "some stack test", 
    "price" : NumberInt(45), 
    "propertyId" : {
        "prefix" : "a", 
        "number" : "7"
    }
}

Sau đó, tôi đã thực thi tập lệnh của bạn (không có sắp xếp) và nó hoạt động tốt:

db.yourCollectionName.aggregate([
    {
        $project: {
            "projectName": 1,
            "price": 1,
            "document": '$$ROOT'
        }
    },
    {
        $addFields: {
            "document.id": {
                $concat: ['$document.propertyId.prefix', '$document.propertyId.number']
            }
        }
    },
    {
        $match: {
            $and: [{
                $or: [{
                        "projectName": {
                            $regex: '.*' + "some stack test"
                        }
                    },

                    {
                        "document.id": {
                            $regex: '.*' + "a" + '.*',
                            $options: "7"
                        }
                    }
                ]
            }]

        }
    },
    {
        $replaceRoot: {
            newRoot: "$document"
        }
    }
])

Việc bạn không nhận được kết quả có thể là do các thông số yêu cầu của bạn. Bên cạnh đó làm thế nào để "projectName" có các thông số tìm kiếm giống như "document.id" của bạn Chúng có khớp nhau không? Hãy kiểm tra lại quy trình đối sánh của bạn:

{"projectName": {$regex: '.*' + req.query.search + '.*', $options: "i"}},       
{'document.id': {$regex: '.*' + req.query.search + '.*', $options: "i"}}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Rails 4 / Devise / MongoDB:Các tham số không được phép sử dụng các thuộc tính tùy chỉnh và các tham số mạnh

  2. MongoDB - nhận tài liệu có thuộc tính tối đa cho mỗi nhóm trong một bộ sưu tập

  3. mongodb:cách tốt nhất để lấy các tài liệu cụ thể và sau đó là phần còn lại

  4. Cách cải thiện hiệu suất chèn MongoDB

  5. Lệnh để lập chỉ mục lại tất cả các bộ sưu tập mongodb