小编Afr*_*idi的帖子

用于Multipart/form-data的POSTMAN

如何使用POSTMAN for Multipart/form-data,它有自定义标题来测试我的控制器,它将2个文件作为参数(public ... controller( MultipartFile[] files))?

POST .... HTTP/1.1
.
.
.
---boundary123
Content-type:application/octet-stream
content-Disposition: form-data filenale="abc.txt" name="someuniquename"
[paylaod content](this is in xml format)
---boundary123
content-type:application/json
content-Disposition:form-data name="metadata"
{ID:"999"}
---boundary123
Run Code Online (Sandbox Code Playgroud)

rest spring web-services multipartform-data postman

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

Spring Data Mongodb - 如何进行批量更新插入

我有一个相同集合的对象/域列表,如果 Mongodb 数据库中不存在,则应将其插入,否则应按 更新现有记录过滤器_id

虽然这可以使用 Spring data MongoRepositories 来完成,但它似乎是:

  1. 太慢了!!!(可能是一条一条保存记录!!!这个操作是Bulk执行的吗???)
  2. 如果有的话DuplicateKeyException,它会终止执行(不保存下一条记录,尽管我想忽略此类异常)

现在,如果我使用BulkOperations bulkOps = mongoTemplate.bulkOps(BulkMode.UNORDERED, collectionName),如果完整性破坏,它仍然会抛出相同的异常!尽管根据 Spring 文档,使用BulkMode.UNORDERED

并行执行批量操作。出现错误时,处理将继续。

考虑下面的代码:

BulkOperations bulkOps = mongoTemplate.bulkOps(BulkMode.UNORDERED, className);

        for (T entry : entries) {
            DBObject dbDoc = new BasicDBObject();
            mongoTemplate.getConverter().write(entry, dbDoc);
            Update update = Update.fromDBObject(dbDoc);
            bulkOps.updateOne(new Query(Criteria.where("_id").is(dbDoc.get("_id"))), update);
        }
        BulkWriteResult result = bulkOps.execute();
Run Code Online (Sandbox Code Playgroud)

当我执行上面的代码时,出现以下异常:

java.lang.IllegalArgumentException: Invalid BSON field name _class
at org.bson.AbstractBsonWriter.writeName(AbstractBsonWriter.java:516)
at com.mongodb.DBObjectCodec.encode(DBObjectCodec.java:129)
at com.mongodb.DBObjectCodec.encode(DBObjectCodec.java:61)
at org.bson.codecs.BsonDocumentWrapperCodec.encode(BsonDocumentWrapperCodec.java:63)
at org.bson.codecs.BsonDocumentWrapperCodec.encode(BsonDocumentWrapperCodec.java:29)
at com.mongodb.connection.UpdateCommandMessage.writeTheWrites(UpdateCommandMessage.java:85)
at com.mongodb.connection.UpdateCommandMessage.writeTheWrites(UpdateCommandMessage.java:43)
at …
Run Code Online (Sandbox Code Playgroud)

spring mongodb spring-data-mongodb spring-boot bulkupdate

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

Cypher - 查询优化

我的问题是为什么WHERE运营商的工作速度不如预期的那么快?考虑我有7个带标签的节点Consumer.这是一些示例数据......

MERGE (c:Consumer {mobileNumber: "000000000000"})
MERGE (:Consumer {mobileNumber: "111111111111"})
MERGE (:Consumer {mobileNumber: "222222222222"})
MERGE (:Consumer {mobileNumber: "333333333333"})
MERGE (:Consumer {mobileNumber: "444444444444"})
MERGE (:Consumer {mobileNumber: "555555555555"})
MERGE (:Consumer {mobileNumber: "666666666666"})
WITH c
MATCH (c1:Consumer) WHERE c1.mobileNumber <> "000000000000"
MERGE (c)-[:HAS_CONTACT]->(c1)
Run Code Online (Sandbox Code Playgroud)

并且HAS_CONTACT:Consumer(mobileNumber:{"000000000000"})所有其他6个节点之间存在关系.unique indexmobileNumber场地也有约束.现在当我尝试执行以下查询时:

    PROFILE MATCH (n:Consumer{mobileNumber : "000000000000"}),
    (m:Consumer{mobileNumber : "111111111111"}) 
    WITH n,m 
    MATCH path = SHORTESTPATH((n)-[contacts:HAS_CONTACT]-(m)) 
    RETURN contacts;
Run Code Online (Sandbox Code Playgroud)

所以它的工作正常如预期(基于唯一索引的搜索节点).以下是其结果: 没有Where子句

现在让我们使用WHERE子句更改以上查询:

PROFILE MATCH (n:Consumer{mobileNumber : "000000000000"}),
(m:Consumer) WHERE …
Run Code Online (Sandbox Code Playgroud)

neo4j cypher spring-data-neo4j

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