[英]How to use $pull with TypeORM to delete an object insude array using Mngodb?
我在 mongodb 中有一个带有模式的集合:
{
"_id" : "",
"vins" : [ { "field" : "" } ],
"xyz" : "",
"password" : "",
"username" : ""
}
我想删除匹配特定条件的“vins”数组中的 object 。 通常,使用“$pull”操作符可以很容易地做到这一点。 但是我找不到任何关于如何使用 TypeORM 的信息。
(值得一提的是,我几乎没有使用 typeorm 的经验,而是在我的整个职业生涯中使用了 mongoose)。
当我尝试
this.repo.update({ "xyz" : <value>} ,{ $pull : { "fields" : { "field": <value> } } })
我收到一个错误
'{ $pull: { "vins": { "vin": any; 类型的参数 }; }; }' 不可分配给“DeepPartial”类型的参数。 Object 文字可能只指定已知属性,并且 '$pull' 不存在于类型 'DeepPartial'
我终于设法使它与:
let mongoRepository = getMongoRepository(Repo);
let result = await mongoUserRepository.findOneAndUpdate({ "field1" : value} , { $pull: {"fields" :{"field": value} }} );
看来我正在寻找的方法在 mongoRepository 中可用,但在 typeorm “Repository”中不可用。
看起来MongoRepository
具有允许这样做的updateOne
和updateMany
方法。 例如,我可以使用updateOne
进行编译和 function 测试。
示例用法:
const user = new User();
user.firstName = "Timber";
user.lastName = "Saw";
user.flags = ["typescript", "nodejs"];
const repo = getMongoRepository(User);
await repo.save(user);
console.log("Saved");
await repo.updateOne({ _id: user.id }, { $pull: { flags: { $in: ["typescript"] } } });
console.log("Updated!");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.