如何在没有循环的情况下构建包含属性的整个对象而不增加其查询?

弟子

我有以下表格的文件收集:

{ name:String, groceries:{ apples:Number, cherries:Number, prunes:Number } }

现在,对于“杂货”中的每个元素,我必须对每个查询增加正值和/或负值。我只是添加了一些示例,什么键或多少键并不重要。

我可以做一个:

var dataToBeIncremented = stuff;
var $inc = {};
for each( var index in dataToBeIncremented )
{
    $inc[ "groceries." + index ] = dataToBeIncremented[ index ];
}

然后

db.update( { _id:targetID }, { $inc : query } )

但是,我可能有成千上万的杂货店元素,并且发现每次更新时执行此循环都很丑陋且未优化。

我想知道如何使它无效或为什么不能对其进行优化。

萨尔瓦多·达利(Salvador Dali)

实际上,没有办法避免这种情况,因为没有这样的命令可以增加子文档中的所有值。

因此,唯一的方法就是像您所做的那样做一些事情:

{
    "$inc": {
        "groceries.apples" : 1, 
        "groceries.cherries" : 1,
        "groceries.prunes" : 1
    }
}

由于您不知道确切的字段是什么,因此需要事先查找它们并创建$ inc语句。这些更新有一件好事:无论您拥有多少元素,您仍然只需要两个查询(查找要更新的内容和实际执行更新的内容)。

我也在考虑如何使用不同的模式来获得更好的结果,但是显然您必须应对已有的问题。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不更改对象的情况下更改其属性?

来自分类Dev

在Vue JS watcher中如何在没有无限循环的情况下更改对象的属性?

来自分类Dev

如何在没有脚本块的情况下引用整个管道对象

来自分类Dev

如何在没有循环的情况下获取 Javascript 对象的所有键

来自分类Dev

如何在不循环的情况下访问对象数组中的所有键和值

来自分类Dev

如何在没有for循环的情况下访问列表中类的属性

来自分类Dev

如何在没有循环的情况下向Javascript数组中的每个对象添加字段?

来自分类Dev

在JavaScript中,如何在没有for循环的情况下计算对象数组中的值差?

来自分类Dev

如何在没有集合的情况下从列表中查询一个对象?

来自分类Dev

如何在没有任何for循环的情况下增加值,但是如何基于文件在PHP中运行的次数

来自分类Dev

如何在不丢失其特定属性的情况下将子实例反序列化为父对象?

来自分类Dev

如何在没有双向绑定的情况下通过隔离作用域访问对象属性?

来自分类Dev

对象属性如何在没有方法的情况下彼此“交谈”?

来自分类Dev

SQL查询-如何在不超过特定薪金限额的情况下增加员工的薪水

来自分类Dev

如何在不预先定义哈希值/对象的情况下增加值

来自分类Dev

如何在不执行几个连续查询的情况下对其进行解释?

来自分类Dev

如何在不执行几个连续查询的情况下对其进行解释?

来自分类Dev

如何在不更改其值的情况下运行属性集?

来自分类Dev

如何在不返回所打印内容的值且没有for循环的情况下重复调用打印函数?

来自分类Dev

如何在不更改其值的情况下修改原始DateTime对象?

来自分类Dev

如何在不初始化或构造对象的情况下从对象获取属性

来自分类Dev

如何在没有整个源代码的情况下获取邮件内容?

来自分类Dev

如何在没有N + 1问题的情况下计算雄辩的关系并加载整个模型?

来自分类Dev

如何在没有科学计数法的情况下显示整个字段值?

来自分类Dev

反应如何在没有按钮的情况下点击整个组

来自分类Dev

如何在没有事务的情况下增加PDO SQLite插入?

来自分类Dev

如何在没有事务的情况下增加PDO SQLite插入?

来自分类Dev

如何在不循环查询的情况下获取类别树?

来自分类Dev

如何在没有用户实例的情况下获取 Active Directory 用户对象类的属性名称?

Related 相关文章

  1. 1

    如何在不更改对象的情况下更改其属性?

  2. 2

    在Vue JS watcher中如何在没有无限循环的情况下更改对象的属性?

  3. 3

    如何在没有脚本块的情况下引用整个管道对象

  4. 4

    如何在没有循环的情况下获取 Javascript 对象的所有键

  5. 5

    如何在不循环的情况下访问对象数组中的所有键和值

  6. 6

    如何在没有for循环的情况下访问列表中类的属性

  7. 7

    如何在没有循环的情况下向Javascript数组中的每个对象添加字段?

  8. 8

    在JavaScript中,如何在没有for循环的情况下计算对象数组中的值差?

  9. 9

    如何在没有集合的情况下从列表中查询一个对象?

  10. 10

    如何在没有任何for循环的情况下增加值,但是如何基于文件在PHP中运行的次数

  11. 11

    如何在不丢失其特定属性的情况下将子实例反序列化为父对象?

  12. 12

    如何在没有双向绑定的情况下通过隔离作用域访问对象属性?

  13. 13

    对象属性如何在没有方法的情况下彼此“交谈”?

  14. 14

    SQL查询-如何在不超过特定薪金限额的情况下增加员工的薪水

  15. 15

    如何在不预先定义哈希值/对象的情况下增加值

  16. 16

    如何在不执行几个连续查询的情况下对其进行解释?

  17. 17

    如何在不执行几个连续查询的情况下对其进行解释?

  18. 18

    如何在不更改其值的情况下运行属性集?

  19. 19

    如何在不返回所打印内容的值且没有for循环的情况下重复调用打印函数?

  20. 20

    如何在不更改其值的情况下修改原始DateTime对象?

  21. 21

    如何在不初始化或构造对象的情况下从对象获取属性

  22. 22

    如何在没有整个源代码的情况下获取邮件内容?

  23. 23

    如何在没有N + 1问题的情况下计算雄辩的关系并加载整个模型?

  24. 24

    如何在没有科学计数法的情况下显示整个字段值?

  25. 25

    反应如何在没有按钮的情况下点击整个组

  26. 26

    如何在没有事务的情况下增加PDO SQLite插入?

  27. 27

    如何在没有事务的情况下增加PDO SQLite插入?

  28. 28

    如何在不循环查询的情况下获取类别树?

  29. 29

    如何在没有用户实例的情况下获取 Active Directory 用户对象类的属性名称?

热门标签

归档