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

Làm thế nào để nói ... khớp khi trường là một số ... trong mongodb?

Sử dụng $type toán tử trong $match của bạn :

db.zips.aggregate([
    {$project : {city:{$substr:["$city",0,1]}}},
    {$sort : {city : 1}}, 
    {$match: {city: {$type: 16}}}      // city is a 32-bit integer
]);

Không có một giá trị loại nào cho số, vì vậy bạn cần biết mình có loại số nào:

32-bit integer   16
64-bit integer   18
Double           1

Hoặc sử dụng $or toán tử để khớp với tất cả các loại số:

db.zips.aggregate([
    {$project : {city:{$substr:["$city",0,1]}}},
    {$sort : {city : 1}}, 
    {$match: {$or: [{city: {$type: 1}}, {city: {$type: 16}}, {city: {$type: 18}}]}}
]);

Hoặc thậm chí sử dụng $not để khớp với tất cả các tài liệu ở đó city không phải là một chuỗi:

db.zips.aggregate([
    {$project : {city:{$substr:["$city",0,1]}}},
    {$sort : {city : 1}}, 
    {$match: {city: {$not: {$type: 2}}}}      // city is not a string
]);

ĐÃ CẬP NHẬT

Để khớp với tất cả các tài liệu ở city là một chuỗi số, bạn có thể sử dụng một biểu thức chính quy:

db.zips.aggregate([
    {$project : {city:{$substr:["$city",0,1]}}},
    {$sort : {city : 1}}, 
    {$match: {city: /^\d.*$/}}      // city is all digits
]);


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose.aggregate (đường ống) liên kết nhiều bộ sưu tập bằng cách sử dụng $ unwind, $ lookup, $ group

  2. MongoDB $ setIsSubset

  3. Lỗi lặp lại:Yêu cầu ủy quyền

  4. mongodb $ pull khớp với regexp không hoạt động

  5. Play 2.0 FakeApplication thiết lập với cấu hình thử nghiệm