当前位置: 首页 > 知识库问答 >
问题:

复杂mongo数组查询

欧阳何平
2023-03-14

给定集合"foo",我们有字段"bar",看起来像这样:

"bar": [{uid:1, mid: 10}, {uid:1, mid: 12}, {uid:2, mid: 14}, {uid:2, mid: 15}, {uid:2, mid: 18}] 

如何查询字段“bar”上满足以下条件的所有“foo”:[14,18]中的“uid”=2和“mid”

共有1个答案

暴绪
2023-03-14

有两种方法可以解释你的情况

字段“bar”上满足以下条件的所有“foos”:[14,18]中的“uid”=2和“mid”

您的意思是“查找foo集合中的所有文档,使bar数组中的e元素满足e.uid=2的要求,并且e.mid是[14,18]的元素”?如果是这样,那么在MongoShell中编写的MongoDB查询是

db.foo.find({ "bar" : { "$elemMatch" : { "uid" : 2, "mid" : { "$in" : [14, 18] } } } })

你的意思是“在[14,18]中找到foo集合中的所有文档,以便有一个bar.uid值为2和bar.mid值”?如果是这样,在mongo shell中编写的MongoDB查询是

db.foo.find({ "bar.uid" : 2, "bar.mid" : { "$in" : [14, 18] } })

以下示例演示了这些查询之间的差异:

> db.foo.drop()
> db.foo.insert({ "_id" : 0, "bar" : [{ "uid" : 2, "mid" : 14 }] })
> db.foo.insert({ "_id" : 1, "bar" : [{ "uid" : 2, "mid" : 99 }, { "uid" : 3, "mid" : 18 }] })

// first version
> db.foo.find({ "bar" : { "$elemMatch" : { "uid" : 2, "mid" : { "$in" : [14, 18] } } } })
{ "_id" : 0, "bar" : [{ "uid" : 2, "mid" : 14 }] }

// second version
> db.foo.find({ "bar.uid" : 2, "bar.mid" : { "$in" : [14, 18] } })
{ "_id" : 0, "bar" : [{ "uid" : 2, "mid" : 14 }] }
{ "_id" : 1, "bar" : [{ "uid" : 2, "mid" : 99 }, { "uid" : 3, "mid" : 18 }] }
 类似资料:
  • 我有这个: 如何从hashlist中排除“item”?打破了我的头。Linq不想对我开放。

  • 我想做一个自动视频生成的东西。目前我这样做的方式是使用editly节点库,它需要一个对象。现在我想从一个文件夹中获取音乐/音频,然后我想获取每个文件的持续时间,这样我就可以动态地将其剪辑在一起。 问题是我想返回一个对象到Array.map函数,该对象在回调中被编辑。但是当我返回对象(在我的脑海中应该被编辑)时,它返回默认值。 以下是我目前的代码: 更新:以下是新的工作代码:

  • 下面给出了问题陈述和解决方案。我无法理解解决方案背后的逻辑。 问题陈述: 给定一个数组包含n+1个整数,其中每个整数介于1和n之间,证明至少存在一个重复的数字。假设只有一个重复的数字,找到重复的一个。 首先,搜索空间是1到n之间的数字。每次我选择一个数字mid(它是中间的那个),并计算所有等于或小于mid的数字。如果计数大于mid,则搜索空间为[1 mid],否则为[mid+1n]。我这样做,直到

  • 问题内容: 我对数据库还很陌生,所以如果这是一个愚蠢的问题,请原谅我。 在现代数据库中,如果我使用索引来访问行,则我相信这将是O(1)复杂性。但是,如果我查询选择另一列,它是O(1)还是O(n)?数据库是否必须遍历所有行,还是为每列建立一个排序列表? 问题答案: 实际上,我认为基于索引的访问将是O(log(n)),因为您仍将通过类似B-Tree的组织进行搜索以获取记录。

  • 主要内容:GWT 复杂组件 介绍,GWT 常用的复杂组件GWT 复杂组件 介绍 表单小部件允许用户与应用程序进行高级交互功能。每个 Complex 小部件都从 Widget 类继承属性,而 Widget 类又从 UIObject 继承属性。 小组件 描述 GWT UIObject类 此小部件包含文本,不会使用 <div> 元素将其解释为 HTML,从而使其以块布局显示。 GWT Widget类 此小部件可以包含 HTML 文本并使用 <div> 元素显

  • 我不同意将键值对添加到具有相同名称的数组中。有没有办法根据索引添加? 我试着在搜索查询中找到关键字,这很管用。但更新会将其添加到文档的底部