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

如何查询同一个字段的mongoDB文档

赖星驰
2023-03-14

我有多个mongodb文档,其中有一些不同的字段,但有一个相同的字段名作为标识符。如何使用同一字段查询不同的文档?例如,以下文档都有一个“name”字段,但没有其他公共字段。

{ "_id" : 1, "name" : "dave123", "gender" : "male"}
{ "_id" : 2, "name" : "dave123", "age" : 23}
{ "_id" : 3, "name" : "an567",  "gender" : "male"}
{ "_id" : 4, "name" : "an567", "age" : 21}

如果我想询问所有23岁的男性,我会怎么做?以下代码不返回任何内容,因为没有包含这两个字段的文档。相反,有两个单独的文档,每个文档都有一个匹配字段。

df.collections.find({$and: [{"gender" : "male"}, {"age" : 23}]})

共有2个答案

陶淳
2023-03-14

如果文档中没有性别年龄,您的查询就不会有任何结果

赵元白
2023-03-14

使用$group在聚合查询中先准备数据,然后准备$search

有点像

db.collections.aggregate([
  {"$group":{
    "_id":"$name",
    "gender":{"$push":"$gender"},
    "age":{"$push":"$age"}
  }},
  {"$match":{"gender":"male","age":23}}
])
 类似资料:
  • 问题内容: 我正在使用node-mongodb-native驱动程序(http://mongodb.github.io/node-mongodb- native/ )使用nodejs 。 我有带有日期属性存储为类型的文档。 通过nodejs,我正在使用以下查询: 它什么也不返回。为了使其正常工作,我需要执行以下操作: 但是在我的nodejs代码中无法识别。 那么,如何通过我的nodejs程序对mo

  • 我将nodejs与node mongodb本机驱动程序一起使用(http://mongodb.github.io/node-mongodb-native/). 我有一些带有日期属性的文档存储为ISODate类型。 通过nodejs,我使用以下查询: 它不返回任何内容。要使其工作,我需要执行以下操作: 但在我的nodejs代码中无法识别ISODate。 那么如何通过我的nodejs程序对mongo日

  • 如何查询从mongodb MapReduce生成的集合中的特定字段? 要只检索输出集合中的lastname字段,应输入什么字段? 结果应为: {“lastname”:“Doe”} >版本() 版本:2.2.2 >db.test.save({first:“john”,last:“doe”}) >db.test.find() {“_id”:ObjectId(“50bc001A8E97247957C60

  • 我正在通过猫鼬使用MongoDB。 > MongoDB是执行集合扫描还是索引有助于提高查询效率?查询是否与仅使用id字段有任何不同? 如果MongoDB在您查询非索引字段时进行集合扫描。如果集合扫描完全相同,查询多个非索引字段是否会加快查询速度?假设我查询五个非索引字段而不是两个(都返回相同的文档)。两个查询是否都进行相同的集合扫描?

  • 问题内容: 我有要查询的模型(称为“活动”)(使用Mongoose)。他们的架构如下所示: 当我询问他们,我填充,,,和字段(所有引用)。在那之后,我也深入了这个领域。这是我的查询代码: 这已经是一个相对复杂的查询,但是我需要做更多。如果它碰到了声明的一部分,我 还 需要确保的字段等于字符串。我尝试使用,但是由于必须先填充事件,因此无法查询其任何字段。我还需要在其他多个查询中实现相同的目标。 如我

  • 我有两张有相同字段桌子。(请不要责怪设计)。 以下仅针对示例架构 表A ID 姓名 电话 键 所以,我想在一次查询中从满足条件“keys”的表A或表B中查询id、name,返回字段只有“id”和“name”,不管它是从表A或表B 中查询 从TABELA中选择a.id、a.name、b.id、b.name作为a,TABLEB作为b,其中a.keys=“1”或b.keys=“1” 它将重复的id、na