如何从字典中搜索列表中的特定字符串并返回mongodb中包含该字符串的所有元素?

时间:2018-05-14 04:06:26

标签: python mongodb pymongo

我的词典有这样的结构:

{"_id":"name","tweets:[tweet1, tweet2, tweet,3]}

我需要执行一个返回具有特定字符串的推文的查询。想象一下,tweet2包含字符串“hello”,我希望所有其他字典中的推文都包含该字符串。

我一直在使用以下查询,但它没有给我正确的结果:

db.collection.find({"tweets":{{$elemMatch:{$regex:".*hello*."}}})

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您可以按照以下方式执行此操作:

db.collections.find({tweets: {$regex: new RegExp('^.*' + "tweet2" + '.*', 'i')}}, {tweets: {$elemMatch: {$regex: new RegExp('^.*' + "tweet2" + '.*', 'i')}}})

$ elemMatch 投影运算符提供了另一种方法来更改返回的文档,使其仅包含第一个匹配的tweets元素。

您也可以通过位置($)运算符获得相同的输出。

如果您需要在投影期间过滤数组,其中包括所有匹配项,而不仅仅是第一项匹配项,您可以使用$filter聚合运算符。

希望它能起作用