Mongoose:查询数据库,不包括包含非拉丁字符的结果

时间:2016-03-25 11:54:40

标签: node.js mongodb mongoose

我有一个包含不同语言数据的数据库,我想从我的查询中排除包含用非拉丁字符(阿拉伯语,希伯来语,希腊语......)编写的文本的结果。是否可以使用标准的猫鼬功能?

我想要这样的事情:

QuoteModel.find({$where:"this.text != <non latin characters>"}, function(error, quotes) {...}

1 个答案:

答案 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"
    }
]