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

Cách tìm kiếm dữ liệu được phân tách bằng dấu phẩy trong mongodb

Nói sử dụng Map-Reduce để tạo một bộ sưu tập riêng biệt lưu trữ genre dưới dạng một mảng có các giá trị đến từ chuỗi được phân tách bằng dấu phẩy phân tách, sau đó bạn có thể chạy công việc Map-Reduce và quản lý các truy vấn trên tập hợp đầu ra.

Ví dụ:tôi đã tạo một số tài liệu mẫu cho foo bộ sưu tập:

db.foo.insert([
    {genre: 'Action, Adventure, Sci-Fi'},
    {genre: 'Thriller, Romantic'},
    {genre: 'Comedy, Action'}
])

Thao tác bản đồ / thu nhỏ sau sẽ tạo ra bộ sưu tập mà từ đó bạn có thể áp dụng các truy vấn hiệu quả:

map = function() {
    var array = this.genre.split(/\s*,\s*/);
    emit(this._id, array);
}

reduce = function(key, values) {
    return values;
}

result = db.runCommand({
    "mapreduce" : "foo", 
    "map" : map,
    "reduce" : reduce,
    "out" : "foo_result"
});

Truy vấn sẽ đơn giản, tận dụng các truy vấn với chỉ mục nhiều khóa trên giá trị value lĩnh vực:

db.foo_result.createIndex({"value": 1});

var genre = ['Action', 'Adventure'];
db.foo_result.find({'value': {'$in': genre}})

Đầu ra :

/* 0 */
{
    "_id" : ObjectId("55842af93cab061ff5c618ce"),
    "value" : [ 
        "Action", 
        "Adventure", 
        "Sci-Fi"
    ]
}

/* 1 */
{
    "_id" : ObjectId("55842af93cab061ff5c618d0"),
    "value" : [ 
        "Comedy", 
        "Action"
    ]
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Hành vi chiếu Morphia cho biến ví dụ có giá trị mặc định

  2. Truy vấn bộ sưu tập mongodb dưới dạng động

  3. update_attributes trả về luôn đúng, ngay cả khi nested_attributes không hợp lệ

  4. Sử dụng nhiều giản đồ cho mỗi bộ sưu tập trên mongodb

  5. Thứ tự tài liệu trả lại của Mongodb find