2016-02-26 59 views
0

蒙戈集合:MongoDB的 - 正則表達式數

{ 
    "price" : 120, // Type : Number 
    "name" : "Product Name 1", 
    "productId" : "num01", 
} 
{ 
    "price" : 121, 
    "name" : "Product Name 2", 
    "productId" : "num02", 
} 
{ 
    "price" : 50, 
    "name" : "Product Name 3", 
    "productId" : "num03", 
} 

我使用正則表達式搜索name & productId

var searchText = new RegExp(req.body.search.value, "i"); 
Product 
    .find({ 
     "companyId" : req.params.companyId , 
     "isDeleted" : false, 
     $or : [ 
       { "name"  : searchText }, 
       { "productId" : searchText } 
      ] 
    }) 

我如何搜索價格字段,如果輸入12產品1,2將被選中。

+0

你指的是第一('價:120')和第二('價格: 121 ')產品匹配?這是因爲這兩個都包含「12」,後面跟着任何東西,你不會在你的表達式中排除。如果您必須使用正則表達式,請考慮查找_exact_模式,例如'^ 12 $'(「從開始到結束我期望'12'」)。對於數字,使用'$ gt','$ gte','$ lt','$ lte'等在範圍內搜索通常會更方便 –

回答

0

您正期待着一個類似SQL的命令來執行價格。

通過爲價格數字,我們將不能夠做到這一點,所以通過給正則表達式

樣本的數據更改爲字符串

{ 
    "price" : "120", // Type : String 
    "name" : "Product Name 1", 
    "productId" : "num01", 
} 
{ 
    "price" : "121", 
    "name" : "Product Name 2", 
    "productId" : "num02", 
} 
{ 
    "price" : "50", 
    "name" : "Product Name 3", 
    "productId" : "num03", 
} 

那麼你可以使用像命令查詢 db.yourcollectionname .find({價:/ 12 /})

db.yourcollectionname.find({價格:/^12 /})