MongoDB 3.4多个查找操作

MongoDB 3.4多个查找操作,mongodb,Mongodb,是否可以在对mongo服务器的单个网络请求中执行多个查询(查找操作)?类似于ElasticSearch(msearch) 谢谢大家! 这是一个模糊的问题,但我以前也遇到过类似的问题 简言之,在这种情况下,最好查询集合中的值列表,并返回一个布尔值,以确定是否可以在某个键中找到该值 e、 g PyMongo中所需的行为: names = ['Bob', 'James'] finds = [Find({'Name': name}) for name in names] db.coll.bulk_fin

是否可以在对mongo服务器的单个网络请求中执行多个查询(查找操作)?类似于ElasticSearch(msearch)


谢谢大家!

这是一个模糊的问题,但我以前也遇到过类似的问题

简言之,在这种情况下,最好查询集合中的值列表,并返回一个布尔值,以确定是否可以在某个键中找到该值

e、 g

PyMongo中所需的行为:

names = ['Bob', 'James']
finds = [Find({'Name': name}) for name in names]
db.coll.bulk_find(finds)
[True, False]
现实世界的例子:

我有一个包含从不同来源收集的数据的数据库。随着新数据的出现,有时这些数据是重复的,因此是不必要的。为了避免收集、清理和更新现有数据的开销,我们决定对源进行迭代,并检查集合中是否存在每个源。如果没有,它将被附加到一个列表中,该列表将在收集、清理和更新阶段使用

显然,随着源代码的增加,对
collection.find()
的调用也在增加。这是一个问题,我们通过这样调用
collection.distinct()
解决了这个问题

原始方法:

new_sources = []
for source in sources:
    if not db.coll.findOne({'Source': source}):
        new_sources.append(source)
修改方法:

existing_sources = set(db.coll.distinct('Source'))
new_sources = set(sources).difference(existing_sources)

最后,我们通过使用其他收集方法来减少所需的查询数量,从而绕过了对
bulk\u read
方法的需求。我还没有遇到过另一种情况,我认为批量读取可以解决我的问题。

出于好奇,有什么用?减少应用程序服务器和mangodb服务器之间的网络流量Please read mongo使用具有字节开销的二进制协议。发送复杂查询的损失将大于额外请求时保存的损失。thx。所以我猜答案是否定的?部分否定。除了聚合请求中的$lookup之外,查询仅限于单个集合。使用$facet,您可以对集合应用不同的过滤器。但如果你的目标是减少交通量,那就不值得努力了。
existing_sources = set(db.coll.distinct('Source'))
new_sources = set(sources).difference(existing_sources)