1

我在 mongodb 中有这样的数据

[

{
  "name":"silvester",
  "product":"laptop,iphone,mobile,phone"
},

{
   "name":"john",
   "product":"cycle,bus,phone,laptop"
},

{
   "name":"franklin",
   "product":"cycle,phone"
}

]

如何在产品密钥中找到该笔记本电脑。如果产品密钥看起来像这样

{
"name":"XXX",
"product":"laptop"
}

我可以通过使用它轻松找到该名称db.collection.find("product":"laptop");

那么如何找到这个呢?

也让我知道这三个使用backbone.js和node.js和mongodb技术运行的网站名称,例如www.trello.com。对不起我最糟糕的英语..

4

2 回答 2

3

在 mongodb 中使用正则表达式

这对我有用

db.collection.find({"product": /laptop/})

更新的答案

如果您想使用变量,请尝试以下操作:

var abc = "laptop";
// other stuff
userdetails.find({"product":new RegExp(abc)}).toArray(function(err,result){
  if (err) console.log ("error: "+err);
  else 
  {    
    // if you want the length
    console.log(result.length);
    // if you actually want to see the results
    for (var i = 0; i < result.length; i++)
    {
      console.log(result[i]);
    }
  }
}); 

再更新一次

var abc = "laptop";
// other stuff

// note this is case sensitive.  if abc = "Laptop", it will not find it
// to make it case insensitive, you'll need to edit the RegExp constructor
// to this: new RegExp("^"+abc+",|, "+abc+"(?!\w)", "i")

userdetails.find({"product":new RegExp("^"+abc+",|, "+abc+"(?!\w)")}).toArray(function(err,result){
  if (err) console.log ("error: "+err);
  else 
  {    
    // if you want the length
    console.log(result.length);
    // if you actually want to see the results
    for (var i = 0; i < result.length; i++)
    {
      console.log(result[i]);
    }
  }
}); 
于 2013-02-11T16:02:52.000 回答
0

正则表达式可以正常工作。还有一个好消息,monogdb 将在即将发布的版本中发布全文搜索索引

http://docs.mongodb.org/manual/release-notes/2.4/#text-indexes

于 2013-02-12T00:45:17.797 回答