通过省略空格来匹配字段 - MongoDB
Matching field by omitting spaces - MongoDB
我正在尝试通过匹配 "Tel" 字段值来查找 mongo 文档,
{
"_id" : ObjectId("54f047aa5b9e5c7c13000000"),
"data" : [
{
"Id" : "1",
"Country" : "India",
"Timezone" : "Europe/Paris",
**"Tel" : "03 20 14 97 70",**
"Prenom" : "ddd",
"Email" : "ddd@gmail.com",
"City" : "Chennai",
"date" : "",
"active" : "true"
}
]
}
如何在 "Tel" 字段中没有 space 的情况下使用下面的查找方法从 mongo 集合中获取上述文档,
>db.test.find({"data.Tel":"0320149770"})
谁能帮帮我!!!
如果这是您真正想要定期执行的操作,那么您最好向文档中添加另一个字段,该字段包含不带任何空格的字符串。
原因是虽然可以执行搜索功能,但 none 方法能够使用索引来匹配文档,所以这意味着按顺序扫描集合中的所有内容找到匹配项。
您可以在 $where
子句中使用 JavaScript 评估来做到这一点:
db.test.find(function() {
return this.data.some(function(el) {
el.Tel.replace(/ /g,"") == "0320149770"
});
});
但是不要那样做,因为这真的很糟糕。您最好只更新所有数据:
db.test.find().forEach(function(doc) {
doc.data = doc.data.map(function(el) {
el.TelNum = el.Tel.replace(/ /g,"");
})
db.test.update({ "_id": doc._id },{ "$set": { "data": doc.data } });
})
或者按照这些思路创建一个没有空格的字段,以便直接搜索。
我正在尝试通过匹配 "Tel" 字段值来查找 mongo 文档,
{
"_id" : ObjectId("54f047aa5b9e5c7c13000000"),
"data" : [
{
"Id" : "1",
"Country" : "India",
"Timezone" : "Europe/Paris",
**"Tel" : "03 20 14 97 70",**
"Prenom" : "ddd",
"Email" : "ddd@gmail.com",
"City" : "Chennai",
"date" : "",
"active" : "true"
}
]
}
如何在 "Tel" 字段中没有 space 的情况下使用下面的查找方法从 mongo 集合中获取上述文档,
>db.test.find({"data.Tel":"0320149770"})
谁能帮帮我!!!
如果这是您真正想要定期执行的操作,那么您最好向文档中添加另一个字段,该字段包含不带任何空格的字符串。
原因是虽然可以执行搜索功能,但 none 方法能够使用索引来匹配文档,所以这意味着按顺序扫描集合中的所有内容找到匹配项。
您可以在 $where
子句中使用 JavaScript 评估来做到这一点:
db.test.find(function() {
return this.data.some(function(el) {
el.Tel.replace(/ /g,"") == "0320149770"
});
});
但是不要那样做,因为这真的很糟糕。您最好只更新所有数据:
db.test.find().forEach(function(doc) {
doc.data = doc.data.map(function(el) {
el.TelNum = el.Tel.replace(/ /g,"");
})
db.test.update({ "_id": doc._id },{ "$set": { "data": doc.data } });
})
或者按照这些思路创建一个没有空格的字段,以便直接搜索。