Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb ReactiveMongo:无法使用ReactiveMongo查询DSL从数组中删除文档_Mongodb_Scala_Reactivemongo - Fatal编程技术网

Mongodb ReactiveMongo:无法使用ReactiveMongo查询DSL从数组中删除文档

Mongodb ReactiveMongo:无法使用ReactiveMongo查询DSL从数组中删除文档,mongodb,scala,reactivemongo,Mongodb,Scala,Reactivemongo,我正在尝试使用反应式mongo查询DSL从阵列中删除文档。我的文档结构如下: { "_id" : ObjectId("55950666c3ad8c860b5141cc"), "name" : "Texla", ------------------------- "location" : { "_id" : ObjectId("5595074bc3ad8c19105141d0"), "companyFieldId" : ObjectId("559140f1ea16e552ac90

我正在尝试使用反应式mongo查询DSL从阵列中删除文档。我的文档结构如下:

{
"_id" : ObjectId("55950666c3ad8c860b5141cc"),
"name" : "Texla",
-------------------------
 "location" : {
    "_id" : ObjectId("5595074bc3ad8c19105141d0"),
    "companyFieldId" : ObjectId("559140f1ea16e552ac90e058"),
    "name" : "Location",
    "alias" : "Site",
    "locations" : [
        {
            "_id" : ObjectId("5595074bc3ad8c19105141d1"),
            "country" : "India",
            "state" : "Punjab",
            "city" : "Moga",
            "zip" : "142001",
            "custom" : false
        },
        {
            "_id" : ObjectId("5595074bc3ad8c19105141d2"),
            "country" : "India da address",
            "custom" : true
        }
    ]
},
------------------------
}
我使用“反应式Mongo扩展”的查询是:

使用上面的更新语句。没有从数组中提取的文档。查询有什么问题

当我运行下面的函数时,这将起作用

genericCompanyRepository.findOne($doc("location.locations" $elemMatch("_id" $eq BsonObjectId.apply("5595074bc3ad8c19105141d1")))) function, the element is return. 
我正在使用并在mongo语法中更新查询,如下所示:

db.collectionName.update({"_id" : ObjectId("55950666c3ad8c860b5141cc"),
                         "location.locations":{"$elemMatch":{"_id":ObjectId("5595074bc3ad8c19105141d1")}}},
                         {"$pull":{"location.locations":{"_id":ObjectId("5595074bc3ad8c19105141d1")}}})
val query = List(MongoDBObject("_id" -> new ObejectId("55950666c3ad8c860b5141cc"),
                         "location.locations" -> MongoDBObject("$elemMatch" -> MongoDBObject("_id"-> new ObjectId("5595074bc3ad8c19105141d1")),MongoDBObject("$pull"-> MongoDBObject("location.locations" -> MongoDBObject("_id": new ObjectId("5595074bc3ad8c19105141d1"))))
db.collectionName.update(query)
salat
mongo中的查询如下:

db.collectionName.update({"_id" : ObjectId("55950666c3ad8c860b5141cc"),
                         "location.locations":{"$elemMatch":{"_id":ObjectId("5595074bc3ad8c19105141d1")}}},
                         {"$pull":{"location.locations":{"_id":ObjectId("5595074bc3ad8c19105141d1")}}})
val query = List(MongoDBObject("_id" -> new ObejectId("55950666c3ad8c860b5141cc"),
                         "location.locations" -> MongoDBObject("$elemMatch" -> MongoDBObject("_id"-> new ObjectId("5595074bc3ad8c19105141d1")),MongoDBObject("$pull"-> MongoDBObject("location.locations" -> MongoDBObject("_id": new ObjectId("5595074bc3ad8c19105141d1"))))
db.collectionName.update(query)
并在集合中使用以下内容更新此内容:

db.collectionName.update({"_id" : ObjectId("55950666c3ad8c860b5141cc"),
                         "location.locations":{"$elemMatch":{"_id":ObjectId("5595074bc3ad8c19105141d1")}}},
                         {"$pull":{"location.locations":{"_id":ObjectId("5595074bc3ad8c19105141d1")}}})
val query = List(MongoDBObject("_id" -> new ObejectId("55950666c3ad8c860b5141cc"),
                         "location.locations" -> MongoDBObject("$elemMatch" -> MongoDBObject("_id"-> new ObjectId("5595074bc3ad8c19105141d1")),MongoDBObject("$pull"-> MongoDBObject("location.locations" -> MongoDBObject("_id": new ObjectId("5595074bc3ad8c19105141d1"))))
db.collectionName.update(query)
我没有直接使用
reactive Mongo
,但在查看更新查询的代码后,您应该按以下方式更改语法,请注意以下未测试的查询语法

genericCompanyRepository.update($doc("_id" $eq BsonObjectId.apply("55950666c3ad8c860b5141cc")
  "location.locations" $elemMatch("_id" $eq BsonObjectId.apply("5595074bc3ad8c19105141d1")), 
$pull("location.locations"("_id" $eq BsonObjectId.apply("5595074bc3ad8c19105141d1")),
GetLastError(), false, false);

在以上@yogesh答案的帮助下,我解决了我的问题,以下是我的最新查询

genericCompanyRepository.update($doc("_id" $eq BsonObjectId.apply("55950666c3ad8c860b5141cc"), "location.locations" $elemMatch("_id" $eq BsonObjectId.apply("5595074bc3ad8c19105141d1"))), 
      $pull("location.locations" $eq $doc("_id" $eq BsonObjectId.apply("5595074bc3ad8c19105141d1"))), GetLastError(), false, false);

谢谢@yogesh,但使用此代码,genericCompanyRepository.update($doc($id“$eq BsonObjectId.apply($55950666c3ad8c860b514cc”)“location.locations”$elemMatch($eq BsonObjectId.apply($5595074bc3ad8c19105141d1”)、pull($location.locations($eq BsonObjectId.apply($5595074bc3ad8c19105141d1”)、getError()
doc(“\u id”$eq BsonObjectId.apply(“55950666c3ad8c860b514cc”)“location.locations”$elemMatch(\u id”$eq BsonObjectId.apply(“5595074bc3ad8c19105141d1”)的问题
语句。@Harmeethightara此查询未使用
反应式Mongo
进行测试,因此您可能应该将Mongo查询转换为
反应式Mongo
我将尝试使用
反应式Mongo
并很快更新,因此您应该自己尝试:)@Harmeethightara无需担心:)