2016-04-06 45 views
1

我想知道如何在mongodb中使用名称的最后三个字母来查找某些内容,其结构为db.collection.find(),谢谢!在最后三个字母中匹配字符串“ces”

{ 
    "address": { 
     "building": "1007", 
     "coord": [ -73.856077, 40.848447 ], 
     "street": "Morris Park Ave", 
     "zipcode": "10462" 
    }, 
    "borough": "Bronx", 
    "cuisine": "Bakery", 
    "grades": [ 
     { "date": { "$date": 1393804800000 }, "grade": "A", "score": 2 }, 
     { "date": { "$date": 1378857600000 }, "grade": "A", "score": 6 }, 
     { "date": { "$date": 1358985600000 }, "grade": "A", "score": 10 }, 
     { "date": { "$date": 1322006400000 }, "grade": "A", "score": 9 }, 
     { "date": { "$date": 1299715200000 }, "grade": "B", "score": 14 } 
    ], 
    "name": "Morris Park Bake Shop", 
    "restaurant_id": "30075445" 
    } 

我目前的尝试:

db.mycollection.find({},{name:"ces"}) 
+0

在未来将是有益的,包括你的问题,一些数据,实际上将匹配你想要的查询条件(S)。这里的''name''字段不会以'ces'结尾,甚至不会在字符串的任何部分包含这些字母。 –

回答

1

取决于是否意味着或“过去三年的‘场’的字母” “字的最后三个字母”那么你一般想要一个$regex

关于这个数据:

{ "_id" : ObjectId("570462448c0fd5187b53985a"), "name" : "Bounces" } 
{ "_id" : ObjectId("5704624d8c0fd5187b53985b"), "name" : "Something" } 
{ "_id" : ObjectId("5704625b8c0fd5187b53985c"), "name" : "Bounces Something" } 

然后查询的 “字”,其中\b手段 “单词边界”,并在 “字符串” 表达\转义:

db.collection.find({ "name": { "$regex": "ces\\b" } }) 

相匹配:

{ "_id" : ObjectId("570462448c0fd5187b53985a"), "name" : "Bounces" } 
{ "_id" : ObjectId("5704625b8c0fd5187b53985c"), "name" : "Bounces Something" } 

或查询“字段”,其中$表示“从结尾”:

db.collection.find({ "name": { "$regex": "ces$" } }) 

相匹配:

{ "_id" : ObjectId("570462448c0fd5187b53985a"), "name" : "Bounces" } 
相关问题