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

Làm cách nào để bạn chuyển đổi một chuỗi thập lục phân thành một số trong mongodb?

Chức năng như vậy chưa tồn tại, hãy xem Hỗ trợ chuyển đổi cơ sở trong $ convert

Bạn có thể xác định các chức năng như sau:

function decimalToBase(input, base) {
   // works up to 72057594037927928 / FFFFFFFFFFFFF8
   var field = "$" + input;
   return {
      $let: {
         vars: {
            bits: {
               $reduce: {
                  input: { $range: [0, 56] },
                  initialValue: [{ dec: field }],
                  in: {
                     $cond: {
                        if: { $gt: [{ $last: "$$value.dec" }, 0] },
                        then: {
                           $concatArrays: ["$$value",
                              [{
                                 b: { $substrBytes: ["0123456789ABCDEF", { $mod: [{ $last: "$$value.dec" }, base] }, 1] },
                                 dec: { $trunc: { $divide: [{ $last: "$$value.dec" }, base] } }
                              }]
                           ]
                        },
                        else: "$$value"
                     }
                  }
               }
            }
         },
         in: {
            $reduce: {
               input: { $reverseArray: "$$bits.b" },
               initialValue: "",
               in: { $concat: ["$$value", "$$this"] }
            }
         }
      }
   }
};

function baseToDecimal(input, base) {
   // works up to 72057594037927928 / FFFFFFFFFFFFF8
   var field = "$" + input;
   return {
      $sum: {
         $map: {
            input: { $range: [0, { $strLenBytes: field }] },
            in: {
               $multiply: [
                  { $pow: [base, { $subtract: [{ $strLenBytes: field }, { $add: ["$$this", 1] }] }] },
                  { $indexOfBytes: ["0123456789ABCDEF", { $toUpper: { $substrBytes: [field, "$$this", 1] } }] }
               ]
            }
         }
      }
   };
}

và sau đó sử dụng nó, ví dụ như thế này:

db.collection.insertOne({ hex: "A3F" })
db.collection.aggregate({ $set: { decimal: baseToDecimal("hex", 16)} })


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tôi có nên sử dụng Java String Pool để đồng bộ hóa dựa trên id khách hàng duy nhất không?

  2. Quản lý người dùng trong nút js với express, mongodb làm cơ sở dữ liệu máy chủ

  3. Phân giải DBRef thành Json

  4. Mongoose getter / setters để chuẩn hóa dữ liệu

  5. Làm cách nào để tải dữ liệu tham chiếu từ biểu mẫu này sang tập hợp khác? Mongodb