如何使用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) 我有一个相同集合的对象/域列表,如果 Mongodb 数据库中不存在,则应将其插入,否则应按 更新现有记录过滤器_id。
虽然这可以使用 Spring data MongoRepositories 来完成,但它似乎是:
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) 我的问题是为什么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 index对mobileNumber场地也有约束.现在当我尝试执行以下查询时:
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子句更改以上查询:
PROFILE MATCH (n:Consumer{mobileNumber : "000000000000"}),
(m:Consumer) WHERE …Run Code Online (Sandbox Code Playgroud) spring ×2
bulkupdate ×1
cypher ×1
mongodb ×1
neo4j ×1
postman ×1
rest ×1
spring-boot ×1
web-services ×1