小编pul*_*hal的帖子

如何使用 setOnInsert 在 mongodb 中放置创建/更新的字段?

我正在使用 nodejs 客户端来循环输入并创建一个将传递给bulkWrite操作的值数组:

  var updateVal = { sku: item.sku, name: item.name, updatedAt: new Date()};
  var insertVal = { sku: item.sku, name: item.name, createdAt: new Date(), updatedAt: new Date()};
  itemsToSave.push({
    updateOne: {
      filter: {
        sku: item.sku
      },
      //update: { $set: updateVal }, // works
      //update: { $setOnInsert: insertVal }, // works
      update: { $set: updateVal, $setOnInsert: insertVal }, // DOES NOT work
      upsert:true
    }
  });
Run Code Online (Sandbox Code Playgroud)

但由于某些原因,我不能混用$set$setOnInsert......当我运行它,什么也没有发生,它就像一个无操作。这是批量操作的限制吗?

我正在使用 node-mongodb-native/2.1 来处理 mongodb 3.0.7

setOnInsert的文档表明这应该是可能的:

...
  { …
Run Code Online (Sandbox Code Playgroud)

mongodb node.js node-mongodb-native

6
推荐指数
0
解决办法
1610
查看次数

当 DLQ 尚不存在时,如何通过 Terraform 配置 SQS?

maxReceiveCount当队列和死信队列都不存在时,如何配置 SQS 队列来为其死信队列指定类似策略?

文件表明,它可能:

resource "aws_sqs_queue" "terraform_queue" {
  # ...
  redrive_policy = "{\"deadLetterTargetArn\":\"${aws_sqs_queue.terraform_queue_deadletter.arn}\",\"maxReceiveCount\":4}"
}
Run Code Online (Sandbox Code Playgroud)

而且我倾向于认为人们在添加文档之前一定已经考虑过并让它工作了。

因此,我正在寻找有关我缺少什么以及我应该怎么做才能绕过这样的合理错误消息的见解:

unknown resource 'aws_sqs_queue.terraform_queue_deadletter'
referenced in variable aws_sqs_queue.terraform_queue_deadletter.arn
Run Code Online (Sandbox Code Playgroud)

amazon-sqs terraform

6
推荐指数
1
解决办法
4363
查看次数

如何在 MongoDb 中执行不区分大小写的聚合分组?

假设我想按Description字段聚合和分组 MongoDb 中的文档。

运行以下(默认区分大小写):

db['Products'].aggregate(
    { $group: { 
        _id: { 'Description': "$Description" },
        count: { $sum: 1 },
        docs: { $push: "$_id" }
    }},
    { $match: {
        count: { $gt : 1 }
    }}
);
Run Code Online (Sandbox Code Playgroud)

在我的样本数据上给了我 1000 个结果,这很好。

但现在我希望运行不区分大小写的查询(使用$toLower)应该给我少于或等于 1000 个结果:

db['Products'].aggregate(
    { $group: { 
        _id: { 'Description': {$toLower: "$Description"} },
        count: { $sum: 1 },
        docs: { $push: "$_id" }
    }},
    { $match: {
        count: { $gt : 1 }
    }}
);
Run Code Online (Sandbox Code Playgroud)

但相反,我得到了 …

mongodb aggregation-framework

6
推荐指数
1
解决办法
6218
查看次数

使用NSFetchedResultsController时如何获取节名,sectionNameKeyPath是一种关系?

在以下代码中:

NSFetchedResultsController *frc =
[[NSFetchedResultsController alloc]
 initWithFetchRequest:fetchRequest
 managedObjectContext:myManagedObjectContext
 sectionNameKeyPath:@"store"
 cacheName:@"SomeCache"
 ];
Run Code Online (Sandbox Code Playgroud)

sectionNameKeyPath的@"store"值实际上指向一个Store实体的关系,该实体具有我真正需要的name属性作为我的节标题标题.

但是我的代码设置方式无法完成,因为我改为获取部分标题,如:0x5b504f0 0x5b51190这是我所知道的Store对象的代码数据地址.

我如何使用NSFetchedResultsController以便我可以告诉它我希望它从sectionNameKeyPath获取其名称属性:@"store"?或者还有其他一些解决方法吗?

iphone nsfetchedresultscontroller sectionheader

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

可以将块用作iOS中notFoundMarker的值吗?

NSDictionary具有以下方法签名:

- (NSArray *)objectsForKeys:(NSArray *)keys notFoundMarker:(id)anObject;
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. nil是合理的默认值notFoundMarker吗?
  2. 是否有可能使密钥(找不到值)恢复为原来的状态notFoundMarker?如果键和值是不同的对象类型,这将很有用,并且让人们知道还缺少什么。
  3. 可以将块用作的值notFoundMarker,它是否可以实际运行?还是仅返回该块的堆栈分配地址?
  4. 可以尝试使用哪些真正不好的东西作为价值notFoundMarker

objective-c nsdictionary ios

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

如何解决来自单独的objc框架的“枚举器重新定义”错误

AuthNet和PayPal移动支付库都定义了ENV_LIVE枚举器。这导致了Xcode错误,例如:

Redefinition of enumerator 'ENV_LIVE' ...
Run Code Online (Sandbox Code Playgroud)

在像这样的情况下,人们不能简单地更改依赖框架的源代码,在Objective-C语法或xcode配置中可以使用哪些变通办法?

原来:

#import "PayPal.h"
#import "AuthNet.h"
...
// AuthNet
[AuthNet authNetWithEnvironment:ENV_TEST];

// PayPal
if (STATUS_COMPLETED_SUCCESS == [PayPal initializationStatus]) {
    [PayPal initializeWithAppID:@"APP-XXX" forEnvironment:ENV_SANDBOX];
}
Run Code Online (Sandbox Code Playgroud)

UPDATE(这是我根据正确答案最终用作解决方法的结果):

#import "PayPal.h"
@class AuthNet;
#import "AuthNetWorkaround.h"
...
[AuthNet authNetWithEnvironment:AUTHNET_ENV_TEST];
Run Code Online (Sandbox Code Playgroud)
extern const int AUTHNET_ENV_LIVE;
extern const int AUTHNET_ENV_TEST;

@interface AuthNetWorkaround : NSObject

@end
Run Code Online (Sandbox Code Playgroud)
#import "AuthNetWorkaround.h"
#import "AuthNet.h"

@implementation AuthNetWorkaround

const int AUTHNET_ENV_LIVE = ENV_LIVE;
const int AUTHNET_ENV_TEST = ENV_TEST;

@end
Run Code Online (Sandbox Code Playgroud)

paypal objective-c xcode4.2

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

如何使用spring-security设置JerseyTest?

我有工作 spring-security配置,它包装我的基于jersey的REST端点,并允许方法级访问.

示例项目包含快速重现问题所需的一切: https //github.com/pulkitsinghal/dummy-rest-api

// Server-Side jersey resource
@GET
@Path("/protected/myendpoint/")
@PreAuthorize("hasRole('DUMMY')")
public String getMyEndpoint(){
    return "blah";
}
Run Code Online (Sandbox Code Playgroud)

但是当为受保护的端点编写健全性测试时,我遇到了以下异常,这种情况只发生在单元测试中:

Caused by:
org.springframework.security.authentication.AuthenticationCredentialsNotFoundException:
An Authentication object was not found in the SecurityContext
Run Code Online (Sandbox Code Playgroud)

以下是基于JerseyTest的Unit Test类:

@Test
public void testProtectedEndpoint() {
    WebResource webResource = resource();
    webResource.addFilter(new HTTPBasicAuthFilter("username", "password"));
    String responseMsg = webResource
                .path("protected/myendpoint/")
                .get(String.class);
    System.out.println(responseMsg);
}
Run Code Online (Sandbox Code Playgroud)

设置JerseyTest弹簧安全保护端点时是否有其他人遇到此问题?可以做些什么呢?

我在这里远程看到一些连接:Spring Test&Security:如何模拟身份验证?但是我并没有能够在那个线程中做出正面或反面的事情.思考?

jersey spring-security

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

如何在 GitHub wiki 的编辑器中缩进?

我在 macbook 上使用 chrome。当我尝试tab在 GitHub wiki 的编辑器/文本区域中缩进代码块时,我失败了,因为 tab 用于在字段之间转移焦点......就像它应该在浏览器中一样。

我尝试了网上过时的建议:

为了实际插入选项卡,您需要按以下组合键:ctrl + alt + tab。注意:根据您的键盘,alt 键有时称为选项键。`

但它工作。

在 gitlab 上它易于使用,tab因为它们的 wiki 中有全屏模式。但我被困在 GitHub 存储库的 wiki 上。

所以问题:

a) 如何在 GitHub wiki 的编辑器或 textarea 中缩进一行?

b) 如何在 GitHub wiki 的编辑器或 textarea 中缩进选定的一组行?

github

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

如何重定向 packagemaker 日志文件输出

当安装程序(通过 packagemaker 构建)正在运行时......从菜单中,我们可以选择Window > Installer Log然后选择Save它......但这不是所有运行安装程序的人都可以要求的。

安装本身应该是一个无需干预的简单过程。但是,如果出现问题并且我们需要返回并查看日志,那么配置 packagemaker 或它生成的安装程序会很棒......每次运行时都吐出日志文件。

如何做到这一点?

macos packagemaker

4
推荐指数
1
解决办法
612
查看次数

spymemcached从SerializingTranscoder for BasicClientCookie抛出ClassNotFoundException

我正在使用spymemcached版本2.8.1来读取cookie对象,但我一直遇到以下异常:

app[web.1]: WARN net.spy.memcached.transcoders.SerializingTranscoder:
                 Caught CNFE decoding 513 bytes of data
app[web.1]: java.lang.ClassNotFoundException
                 org.apache.http.impl.cookie.BasicClientCookie
Run Code Online (Sandbox Code Playgroud)
  1. 我正在使用httpclient版本4.1.1:https://dl.dropbox.com/u/6207935/Screen%20Shot%202013-02-05%20at%202.47.19%20PM.png 里面有BasicClientCookie类,所以我我不太确定为什么它"无法找到"

  2. 同样基于听说 - 我认为BasicClientCookie在4.1.1中已经标记为Serializable,但确切的javadocs有点难以挖掘,老实说......所以它是我的假设.无论如何,异常似乎与序列化没有关系,但我想我会把它抛到那里以便完整性问题.

解决这个问题会有什么想法?


更新#1(2013年2月5日)

这些可能会解决这个问题:

  1. http://code.google.com/p/spymemcached/issues/detail?id=146 - 但是在使用Heroku时我不知道如何获得与我的应用服务器文件系统相同级别的控制权...它在这里描述.
  2. http://code.google.com/p/spymemcached/issues/detail?id=155 - 不确定如何让spymemcached使用自定义SerializingTranscoder.

heroku httpclient spymemcached

3
推荐指数
1
解决办法
1332
查看次数

如何使用传递给Rhino javascript引擎的ArrayList java对象?

以下数据:

sku=[111222]
Run Code Online (Sandbox Code Playgroud)

正在作为参数传递给在Rhino javascript引擎中调用的javascript函数.

在java端(数据源自此处)这意味着"sku"的String键被映射到其中包含一个字符串"111222"的ArrayList.

一旦这转到了Rhino方面,我不知道如何将其用作javascript对象.例如:我如何做一些简单的事情就像在JS端获取111222值一样简单?

我决定吐出这个对象的键/值转储在JS方面的样子,这就是我得到的:

sku=

empty: false

indexOf: function indexOf() {/*
int indexOf(java.lang.Object)
*/}

notifyAll: function notifyAll() {/*
void notifyAll()
*/}

removeAll: function removeAll() {/*
boolean removeAll(java.util.Collection)
*/}

trimToSize: function trimToSize() {/*
void trimToSize()
*/}

containsAll: function containsAll() {/*
boolean containsAll(java.util.Collection)
*/}

contains: function contains() {/*
boolean contains(java.lang.Object)
*/}

equals: function equals() {/*
boolean equals(java.lang.Object)
*/}

notify: function notify() {/*
void notify()
*/}

subList: function subList() {/*
java.util.List subList(int,int)
*/}

class: class java.util.ArrayList
set: function set() {/* …
Run Code Online (Sandbox Code Playgroud)

javascript rhino

2
推荐指数
1
解决办法
7173
查看次数

如何在像 firestore 这样的 nosql 解决方案中创建多租户数据模型?

我是什么意思multi-tenant

  1. 用户可以属于一个组织。
  2. 在没有任何人邀请的情况下注册的用户,将被放置在他们自己的组织 (blah123) 中作为其管理员。
  3. 多个这样的用户是他们自己的单一组织在同一个基于 Firestore 的应用程序中的创始人。他们可以邀请其他人和被邀请的人加入创始人的组织。
  4. 为组织创建的任何数据或由该组织的用户创建的任何数据都应与另一个组织的用户分开
  5. 如果需要,我们应该能够配置属于同一组织的用户以查看该组织的其他用户创建的任何数据。

作为专家,您认为这是为 Cloud Firestore 设计的不可能的数据模型吗?可以做到这一点的数据模型会是什么样子?

database-design datamodel firebase google-cloud-firestore

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

如何在 MongoDB 查询中将 $elemMatch 与 $nin 或 $not 结合起来?

我想找到数组 fieldB 在 fieldC 对象中没有值(val1 和 val2)的所有结果。

我努力了:

db.SalesToImport
  .find(
    {
      fieldA: {$exists:true},
      ,fieldB: {$not: {$elemMatch: {fieldC: 'val1'}}}
      ,fieldB: {$not: {$elemMatch: {fieldC: 'val2'}}}
    }
  );
Run Code Online (Sandbox Code Playgroud)

我已经尝试过:

db.SalesToImport
  .find(
    {
      fieldA: {$exists:true},
      ,fieldB: {$not: {$elemMatch: {fieldC: 'val1', fieldC: 'val2'}}}
    }
  );
Run Code Online (Sandbox Code Playgroud)

它们都产生相同的结果,虽然它们删除了一些文档,但其中仍然有文档val1val2这告诉我我做了一个不正确的查询。

文档的结构包含如下字段:

{
  fieldA: value,
  fieldB: [
    {fieldC:value1, fieldD:value3, fieldE:value5},
    {fieldC:value2, fieldD:value4, fieldE:value6}
  ]
}
Run Code Online (Sandbox Code Playgroud)

我应该如何在 MongoDB 查询中将 $elemMatch 与 $nin 或 $not 结合起来以获得所需的效果?

更新#1

根据建议,我运行了以下实际但经过清理的查询:

db.SalesToImport
  .find(
    {
      calculatedTaxRate: {$exists:true}, unidentifiedProducts: {$exists:false}, unidentifiedCustomer: {$exists:false},
      register_sale_payments: …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query

0
推荐指数
1
解决办法
2864
查看次数