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

为什么isnt mongo在数组中返回对象?

刁远
2023-03-14

我正在搜索文档中的contacts数组中包含特定_ID的文档。下面是结构:

{
"_id": ObjectId("505c2daea9d397f2260001cd"),
 "contacts": [
     {
       "userGroupId": ObjectId("50422b53743d6c7c0e000000"),
       "userId": ObjectId("5061f8c66096eee07d000008") 
    },
     {
       "userGroupId": ObjectId("505bf9476096ee990200000e"),
       "userId": ObjectId("505c2daea9d397f2260001ce") 
    },
      {
       "userGroupId": ObjectId("50422b75743d6c700e000004"),
       "userId": ObjectId("506cff736096ee1e26000384") 
    },
     {
       "userGroupId": ObjectId("50422b66743d6c6b0e000000"),
       "userId": ObjectId("505c2daea9d397f2260001cf") 
    },
     {
       "userGroupId": ObjectId("5050e86aa9d3977b67000000"),
       "userId": ObjectId("506494ef6096ee021f000064") 
    },
     {
       "userGroupId": ObjectId("50422b53743d6c7c0e000000"),
       "userId": ObjectId("504d72246096ee2348000008") 
    },
     {
       "userId": ObjectId("50735e8e6096ee7c510002b9"),
       "userGroupId": ObjectId("5046c73e6096ee1b77000001") 
    } 
  ]
}
{
 "_id": ObjectId("505c2da0a9d397f2260000b7"),
"contacts": [
      {
       "userGroupId": ObjectId("50422b66743d6c6b0e000000"),
       "userId": ObjectId("505c2da0a9d397f2260000b8") 
    },
     {
       "userId": ObjectId("5061f8c66096eee07d000008"),
       "userGroupId": ObjectId("50422b53743d6c7c0e000000") 
    },
     {
       "userId": ObjectId("50735e8e6096ee7c510002b9"),
       "userGroupId": ObjectId("5046c73e6096ee1b77000001") 
    } 
  ]
}
db.collection.find({ 'contacts': 
    {$elemMatch: { userId: ObjectId("50735e8e6096ee7c510002b9") } }
});
db.collection.find({'contacts.userId': ObjectId("50735e8e6096ee7c510002b9") });

它执行与$elemmatch查询相同的操作。

我可能错过了一些非常基本的东西,但如果你们能提供一些建议,我将非常感谢。

共有1个答案

司空健
2023-03-14

事实证明,这是应用程序层的问题,而不是Mongo的问题。其中一个记录是数字键控的,另一个没有,我只是一直在使用Rock Mongo,它似乎键控了所有的数组。

谢谢你的帮助JohnnyHK

 类似资料:
  • 当我在一个涉及Java8新流的项目中工作时,我注意到当我对流调用时,它返回的是而不是。尽管我很惊讶,但我开始深入研究Java 8的源代码,找不到为什么他们没有将实现为的任何理由。这背后有什么道理吗,还是仅仅是一种(在)一致性? 编辑1:我在回答中注意到很多人说这是不可能的,但是这个代码段编译并返回预期的结果?

  • 我有一个Spring Boot应用程序连接到本地mongoDB数据库。当我试图从集合中获取所有记录时,它返回一个空数组。在输出中,它表示已连接到端口27017。它在运行应用程序时不会给我任何错误,但在我键入时只返回一个空数组http://localhost:8080/courses/我错过了什么? 模范班 控制器类 存储库类 MongoDb输出

  • 问题内容: 可能重复: JavaScript:检查对象是否为数组? 为什么将对象数组视为对象而不是数组?例如: 问题答案: javascript的怪异行为和规范之一就是Array is 。 您可以通过以下几种方法检查变量是否为数组: 但是最可靠的方法是: 由于您使用jQuery标记了问题,因此可以使用jQuery函数:

  • 我有以下练习: 编写一个名为createListOfObjects的函数,该函数接受 包含名字和姓氏以及返回值的字符串数组 一个对象数组,每个对象都具有属性 和以及名字和姓氏值 对应值* var namesList=['Cameron Betts','Shana Lopez','Angela li']* createListOfObjects(名称列表) = 到目前为止,我的解决方案是: 但它返回

  • 首先,我收到来自post string属性和来自控制器的inputStream。 接下来,我的服务调用ParseGeojosnStream以流式传输文件的内容。 接下来,传递特性的名称和列表,并将其插入表中。 最后,使用字符串属性和表名作为id创建scheme。 那么,当强制转换为json并将其存储在数据库中时,为什么要返回一个空的属性对象呢? 代码如下: log.info(“jsonGeomet

  • 问题内容: 即使正则表达式应返回true,程序也不会退出。代码有什么问题? 问题答案: 仅当整个字符串与正则表达式匹配时才返回。在你的情况下,你的正则表达式仅代表 一个 字符不是,或。 我怀疑您要检查字符串是否包含您在正则表达式中描述的这些特殊字符之一。在这种情况下,请将您的正则表达式括起来,以使正则表达式匹配整个字符串。哦,您不必逃脱character class内部。