在MongoDB中使用随机键按嵌套文档值查找

科斯


我具有以下集合结构:

{
   _id : ObjectId('...'),
   randomKeysSubdocument : {
       'jhaksdf' : 'something',
       'jio348akgqug' : 'something else',
       'kgowe98akjg' : 'more things',
   }
}

其中randomKeysSubdocument是一个子文档,具有以编程方式生成的随机密钥(我不知道它们的名称)。
有没有一种方法可以按照与randomKeysSubdocument是数组的查询方式相同的方式通过randomKeysSubdocument值进行查询:

{
   _id : ObjectId('...'),
   randomKeysSubdocument : [
       'something',
       'something else',
       'more things',
   ]
}

询问:

db.my_collection.find({
    randomKeysSubdocument : 'something'
})
用户名

因此,很明显您不应该这样做。用不同的键名构造文档不是一个好的模式,并且肯定不适用于MongoDB或常规数据库搜索。

只有“数据”可以建立索引,因此对您来说更好的结构是:

{
   randomKeysSubdocument : [
       { "key": 'jhaksdf', "data": 'something' },
       { "key": 'jio348akgqug', "data": 'something else' }
       { "key": 'kgowe98akjg', "data": 'more things' }
   ]
}

您注意到在数组中搜索的位置已经很容易了:

db.collection.find({ "randomKeysSubdocument.data": "something" })

当然,可以使用索引来加快处理速度。


当前的处理方式必须依靠JavaScript处理,$where并且不能为此使用索引:

db.collection.find(function() {
    var doc = this.randomKeysSubDocument;
    return Object.keys(doc).some(function(key) {
       return doc[key] == "something";
    });
})

这将比标准查询慢得多,并且必须测试集合中的每个文档。

对于我的我,我将改变结构,不再使用“数据”作为键名的模式,而是将其放在数据中,而不是它所属的位置,并保持结构一致以进行搜索。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在嵌套地图中查找特定键的值

来自分类Dev

MongoDB中的嵌套文档值搜索

来自分类Dev

mongodb聚合框架按嵌套文档匹配

来自分类Dev

从嵌套的NSDictionary查找键/值

来自分类Dev

在深度嵌套的文档查询中使用MongoDB的位置运算符$

来自分类Dev

在嵌套对象的数组字段中按ID查找子文档

来自分类Dev

MongoDB:如何通过嵌套文档中的ID查找文档

来自分类Dev

在MongoDB中使用随机键按嵌套文档值查找

来自分类Dev

在MongoDB中使用$ in查找子文档

来自分类Dev

MongoDB:在具有未知键的对象中查找给定字段值的文档

来自分类Dev

在MongoDB中使用聚合框架按特定的嵌套字段值对文档进行计数

来自分类Dev

mongoDB查询以嵌套数组查找文档

来自分类Dev

在嵌套字典中查找特定键的值

来自分类Dev

按值查找条目键的最佳方法

来自分类Dev

通过使用其他字段值作为键来查找MongoDB文档的字段值

来自分类Dev

使用键是随机的Firebase Realtime数据库查询子代中的嵌套值

来自分类Dev

从mongodb中的文档获取键/值对的数组

来自分类Dev

MongoDB计算多重嵌套文档的值

来自分类Dev

MongoDB在使用动态键在嵌套文档中添加两个值时遇到问题

来自分类Dev

Elasticsearch按列值查找重复文档

来自分类Dev

在MongoDB中使用一组密钥查找文档

来自分类Dev

mongodb聚合框架按嵌套文档匹配

来自分类Dev

流星/ MongoDB:按相同属性的多个值查找文档

来自分类Dev

在MongoDB中使用文档

来自分类Dev

在Python字典中使用嵌套键作为值

来自分类Dev

在foreach中使用嵌套键

来自分类Dev

mongodb查找子文档的所有值

来自分类Dev

MongoDB查找然后查询嵌套文档

来自分类Dev

MongoDB 查找嵌套对象值

Related 相关文章

热门标签

归档