我有一个包含不同语言数据的数据库,我想从我的查询中排除包含用非拉丁字符(阿拉伯语,希伯来语,希腊语......)编写的文本的结果。是否可以使用标准的猫鼬功能?
我想要这样的事情:
QuoteModel.find({$where:"this.text != <non latin characters>"}, function(error, quotes) {...}
答案 0 :(得分:4)
您可以在MongoDB查询中应用正则表达式来仅获取包含拉丁文本的文档。
db.collection.find({news:{$regex:"[\p{L}\s]+"}})
我在集合中有以下输入文件
[
{
"_id" : ObjectId("56f5326f70f5f66368e340b2"),
"news" : ". قد ضرب النزاع التجارية تشيكوسلوفاكيا"
},
{
"_id" : ObjectId("56f532e85a4b38f73c1ef8ce"),
"news" : "אודות לחיבור עוד, אודות מונחונים ארכיאולוגיה את"
},
{
"_id" : ObjectId("56f5331b5a4b38f73c1ef8cf"),
"news" : "Tota adversarium vis eu. Meis choro epicuri vel at"
},
{
"_id" : ObjectId("56f533725a4b38f73c1ef8d0"),
"news" : "exploding star's shockwave has been captured in visible light by NASA"
}
]
运行上面的查询后,我得到了
[
{
"_id" : ObjectId("56f5331b5a4b38f73c1ef8cf"),
"news" : "Tota adversarium vis eu. Meis choro epicuri vel at"
},
{
"_id" : ObjectId("56f533725a4b38f73c1ef8d0"),
"news" : "exploding star's shockwave has been captured in visible light by NASA"
}
]