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

查找对象数组中具有两个特定ID的所有文档。MongoDb

蒙经纶
2023-03-14

你好,我有一个mongodb find()问题查询。我试图找到在同一个对象数组中有两个特定ID的所有文档。

示例文档结构:

{
    gameId:394028,
    people: [{
      id: 5,
      mapSide: 'left'
   },{
      id: 4,
      mapSide: 'right'
   },{
      id: 1,
      mapSide: 'right'
   },{
      id: 2,
      mapSide: 'left'
   }]
}
{
    gameId:394028,
    people: [{
      id: 7,
      mapSide: 'left'
   },{
      id: 9,
      mapSide: 'right'
   },{
      id: 4,
      mapSide: 'right'
   },{
      id: 1,
      mapSide: 'left'
   }]
}
    db.COLLECTION.find({"people.id":5, "people.id":4}); //should return doc 1
    db.COLLECTION.find({
         people: {$elemMatch:{id:4, mapSide:"left"}, 
         people: {$elemMatch:{id:1, mapSide:"right"}
    },{
         people: {$elemMatch:{id:4, mapSide:"right"}, 
         people: {$elemMatch:{id:1, mapSide:"left"}
    }); //Should return doc 2, because doc 1 has both mapSide as 'right'

如果我能帮你解决这两个问题中的任何一个,那就太好了!谢了。

共有1个答案

祖利
2023-03-14

可以使用以下查询查找people数组中包含ID==4元素和ID==5元素的所有文档:

db.COLLECTION.find( { $and : [ { 'people.id' : 4 }, { 'people.id' : 5 } ] } )
 类似资料:
  • 问题内容: 我有一个_ids数组,我想相应地获取所有文档,最好的方法是什么? 就像是 … 该数组可能包含数百个_id。 问题答案: mongoose中的函数是对mongoDB的完整查询。这意味着您可以使用方便的mongoDB 子句,该子句的工作方式与SQL版本相同。 即使对于包含成千上万个id的数组,此方法也将很好地工作。(请参阅有效确定记录的所有者) 我建议任何与工作有关的人员通读优秀的mong

  • 我正在尝试查找不包含至少一个具有特定字段值的文档的所有文档。例如,下面是一个示例集合: 我希望找到docs块中没有包含至少一个foo=1的记录的文档的每个记录。在上面的示例中,应该只返回第二个文档。 我还查看了$nin运算符,但示例只显示数组包含基元值列表时的情况,而不是附加文档。当我尝试使用类似于下面的东西来实现这一点时,它查找的是确切的文档,而不仅仅是我想要的foo字段。 有没有用基本运算符来

  • 下面是适当的方法签名的样子: (问题领域是扑克;列举奥马哈扑克牌中所有可能的板卡组合。是的,还有其他方法可以解决这个问题,但我正在测试这个方法,因为处理比特比大多数其他选择要快得多。)

  • 问题内容: 是否有可能从具有特定属性的数组中获取对象?还是我需要遍历数组中的所有对象并检查属性是否是我正在寻找的特定对象? 编辑:谢谢你给我正确的方向,但我有一个转换此问题。 //再编辑一次:好的,如果只有一个特定的结果?这也是可行的方法吗? 问题答案: //这不起作用-NSArray不是Images的子类型-那么如果只有1种可能的结果怎么办? 您无法在编译时证明数组上只有一个可能的结果。您实际要

  • 问题内容: 考虑这样的一张桌子 问题是,如果我给定值2和5,我应该得到102和105,而102和105都同时具有值​​2和5,或者如果我给定值1和3,我应该得到100和104。 我如何仅用一个sql命令就能做到这一点?我需要一个尽可能轻的查询。 并使用UNION,INTERSECTION或NESTED SQL,哪个更快,更慢,更重? 在此先感谢Ergec 问题答案: 有很多解决方案。除了Jhonn

  • 问题内容: 我有一些复杂的对象,例如猫,它具有许多属性,例如年龄,喜爱的猫食等等。 Java集中存储了一堆猫,我需要查找所有3岁的猫,或者最喜欢猫粮的Whiskas。当然,我可以编写一个自定义方法来查找那些具有特定属性的Cat,但是这样做会麻烦许多属性。有一些通用的方法吗? 问题答案: 您可以编写一个采用接口实例的方法,该实例定义了一个方法,该方法可以通过所需的任何属性检查来实现。 更好的是,使其