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

Cách lấy tất cả các khóa của bộ sưu tập có chứa giá trị (Chuỗi) nhất định trong mongodb

Bạn có thể thực hiện việc này bằng cách định hình lại dữ liệu trong nguồn dữ liệu bằng cách sử dụng objectToArray

Chơi

db.collection.aggregate([
  {
    "$project": {
      "data": {
        "$objectToArray": "$$ROOT"
      }
    }
  },
  {
    $unwind: "$data"
  },
  {
    "$match": {
      "data.v": {
        $regex: "hello"
      }
    }
  }
])

Một phiên bản nâng cao khác tại đây Nó định hình lại dữ liệu trở lại

db.collection.aggregate([
  {
    "$project": {
      "data": {
        "$objectToArray": "$$ROOT"
      }
    }
  },
  {
    $unwind: "$data"
  },
  {
    "$match": {
      "data.v": {
        $regex: "hello"
      }
    }
  },
  {
    $group: {//Grouping back and restructuring the data so that objectToArray will bring the original format easily.
      "_id": "$_id",
      data: {
        "$addToSet": {
          k: "$data.k",
          v: "$data.v"
        }
      }
    }
  },
  {
    "$project": {
      "data": {
        "$arrayToObject": "$data"
      }
    }
  }
])

Tham khảo tài liệu của arrayToObjectobjectToArray , rồi đến $regex




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào tôi có thể thực hiện bộ lọc tổng hợp Mongodb cho nhiều bộ sưu tập?

  2. MongoServer.State tương đương trong trình điều khiển 2.0

  3. Cách cài đặt NodeJS với MongoDB trên Ubuntu

  4. Không tìm thấy dữ liệu MongoDB / db

  5. In kết quả truy vấn Mongo thành một tệp khi ở trong trình bao mongo