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

Kiểm tra xem giá trị có tồn tại trong bộ sưu tập mongo không

Trước hết, nếu bạn đang lưu trữ tài liệu của mình như một mảng, tại sao bạn không lưu trữ chúng dưới dạng một mảng? Nếu bạn đến từ nền tảng cơ sở dữ liệu quan hệ, tôi có thể thấy bạn muốn lưu trữ nó theo cách đó như thế nào, nhưng trong Mongo, nếu nó giống như một mảng, nó chỉ nên được lưu trữ dưới dạng một mảng.

{
    "_id" : ObjectId("52e5361f30f28b6b602e4c7f"),
    "0" : "h",
    "1" : "o",
    "2" : "m"
}

Nên là:

{
    "_id" : ObjectId("52e5361f30f28b6b602e4c7f"),
    "keys" : [ "h", "o", "m" ]
}

Trong trường hợp này, Mongo có một toán tử tiện dụng được gọi là $addToSet điều đó sẽ hoạt động giống như $push ngoại trừ việc nó sẽ chỉ thêm nó vào mảng nếu nó không tồn tại. Thao tác sẽ trông giống như sau:

collection.update( query, { $addToSet : { 'keys' : 'l' }}, callback );
// add key 'l'

collection.update( query, { $addToSet : { 'keys' : 'm' }}, callback );
// looks in document, sees 'm' in array, and does nothing

CHỈNH SỬA:

Với bản cập nhật, nó sẽ thêm khóa vào mảng nếu nó không có ở đó, nhưng nếu bạn CHỈ muốn biết liệu nó có tồn tại hay không, tôi nghĩ cách tốt nhất là sử dụng findOne :

// find the doc by _id  and the value you want in keys, returns null if it's not a match
collection.findOne({ _id : 52e5361f30f28b6b602e4c7f, 'keys' : 'l' }, function(err, doc) {
    if( doc == null ) {
        // do whatever you need to do if it's not there
    } else {
        // do whatever you need to if it is there
    }
    db.close();
}

Để giữ nguyên bản chèn của bạn, bạn chỉ cần thay đổi Keys tới:

Keys = { 'keys' : [ 'key1', 'key2', 'key3' ] };

Và chèn không cần phải thay đổi khác. Ngoài ra, trong bộ sưu tập của mình, bạn có thể muốn thay đổi _id trở thành username hoặc thêm username trường vào tài liệu của bạn.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Không thể sử dụng mongoose-unique-validator để hoạt động

  2. Xóa các bản sao khỏi MongoDB

  3. Làm thế nào để hiển thị hình ảnh đã tải lên phía máy chủ một lần nữa trong trình duyệt bằng cách sử dụng ngăn xếp MEAN?

  4. Kiểm tra xem giá trị có tồn tại trong bộ sưu tập mongo không

  5. Cách tra cứu $ bằng cách tránh các giá trị null trong mongodb tổng hợp