小编she*_*sek的帖子

MongoDB:upsert子文档

我有类似的文档,具有唯一索引bars.name:

{ name: 'foo', bars: [ { name: 'qux', somefield: 1 } ] }

.我想更新子文档在哪里{ name: 'foo', 'bars.name': 'qux' }$set: { 'bars.$.somefield': 2 },或者用{ name: 'qux', somefield: 2 }under 创建一个新的子文档{ name: 'foo' }.

是否可以使用带有upsert的单个查询来执行此操作,还是必须发出两个单独的查询?

相关:嵌入式文档中的"upsert"(建议更改模式以将子文档标识符作为键,但这是两年前的事情,我想知道现在是否有更好的解决方案.)

upsert mongodb mongodb-query

35
推荐指数
3
解决办法
2万
查看次数

有人曾经使用PHP(未设置)投射吗?

我刚刚注意到PHP有一个类型转换(unset),我想知道它可能用于什么.它甚至没有真正取消设置变量,它只是将其转换为NULL,这意味着它(unset)$anything应该与简单编写完全相同NULL.

# Really unsetting the variable results in a notice when accessing it
nadav@shesek:~$ php -r '$foo = 123; unset($foo); echo $foo;'
PHP Notice:  Undefined variable: foo in Command line code on line 1
PHP Stack trace:
PHP   1. {main}() Command line code:0

# (unset) just set it to NULL, and it doesn't result in a notice
nadav@shesek:~$ php -r '$foo = 123; $foo=(unset)$foo; echo $foo;'
Run Code Online (Sandbox Code Playgroud)

有人用过它吗?我想不出任何可能的用法......

补充:
问题的主要思想是:使用
什么理由(unset)$smth而不仅仅是NULL

php

23
推荐指数
2
解决办法
1811
查看次数

共享单元测试夹具

我正在编写一个项目的单元测试(用PHP编写,使用PHPUnit),它的整个环境(加载的组件,事件,配置,缓存,每个环境单例等)保存在一个对象中,所有组件都使用它来进行交互彼此(使用中介模式).

为了使单元测试运行得更快,我正在共享环境对象和一些其他对象(例如,在我的测试用例中用于视图对象[如在MVC的V中],视图管理器对象[充当工厂用于视图对象并负责实际渲染])在同一测试用例中的测试中(使用PHPUnit setUpBeforeClass()和静态属性).

尽管如此,据我所知,我共享的对象不应影响测试的完整性(例如,在视图的情况下,环境和视图管理器对象是共享的,但是为每个对象创建了一个单独的视图对象测试 - 这是测试用例实际测试的对象),它对我来说感觉越来越不对.

如果每个测试使用完全隔离的环境并且不能以任何方式影响同一测试用例中的其他测试,我宁愿使用它.然而,这会使测试运行得慢得多,感觉价格很高,我无法确切地指出其缺点,主要是"感觉不对".

你怎么看?你能否指出任何缺点,以便我可以说服自己值得更长的执行时间?或者我只是过度反应而且完全没问题?

php phpunit unit-testing fixtures

6
推荐指数
2
解决办法
1252
查看次数

Chromium的自定义安装程序

我想提供一个Chrome(或可能是Chromium?)的安装程序,它安装了我的扩展程序,安装到一个单独的文件夹,--enable-experimental-extension-apis默认情况下已打开.能够定制外观和感觉更适合我的品牌也很酷.

有谁知道谷歌的TOS是否允许它?可能吗?之前完成了吗?有没有简单的方法可以做到这一点,而不是乱砍Chromium源代码?

installer customization google-chrome chromium google-chrome-extension

5
推荐指数
1
解决办法
1967
查看次数