通过省略空格匹配字段-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"
}
]
}
如何使用下面的find方法从mongo集合中获取上述文档,在"Tel"字段中没有空格,
>db.test.find({"data.Tel":"0320149770"})
有人能帮帮我吗!!!
如果这是您真正想要定期执行的操作,那么最好向文档中添加另一个字段,该字段中存在不带空格的字符串。
原因是尽管有一些功能可以执行搜索,但没有一种方法能够使用索引来匹配文档,因此这意味着扫描集合中的所有内容以找到匹配项。
您可以在$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 } });
})
或者沿着这些线做一些事情,让一个没有空格的字段可以直接搜索。
相关文章:
- 如何访问对象内部的“categoryIds”字段/键,该对象包含mongodb's `ObjectId(s)`数
- MongoDB-通过比较集合和对象的数组来返回现有字段的数组
- 测试MongoDB中未设置或丢失的字段
- 将变量用作mongodb中字段名的一部分
- MongoDB聚合将两个不同的字段合并为一个并获取计数
- Selectize.js:如何将数据库中已经选择的标签预加载到输入字段(Meteor&MongoDB/JSON)
- mongodb mongodump json日期字段解析错误
- 将文档的MongoDB字段合并到一个文档中
- Mongodb按dbref字段分组
- 在document-mongoDB中设置一个字段
- 通过省略空格匹配字段-MongoDB
- 如何计算mongodb中两个集合中一个字段的不同值的数量
- 查找包含子对象MongoDb和Node.js的特定字段的文档
- 如何通过javascript使用mongose从mongoDB中获取字段的值
- 在MongoDB和Node.js中查找某个字段具有与对象完全相同元素的文档
- 可以't散列密码并将其设置为mongodb模式中的字段
- 查找Mongodb字段中出现次数最多的单词
- 我需要使用mongodb本机驱动程序来查找按时间戳字段排序的不同id
- MongoDB 字段永远不会为空
- 基于匹配查询更新所有文档和嵌入式文档中的字段.MongoDB NodeJS