mongodb从数组中拉出对象无法使用mongoose [英] mongodb pull object from an array not working using mongoose

查看:126
本文介绍了mongodb从数组中拉出对象无法使用mongoose的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用$ pull运算符从mongodb中的数组中删除注释对象,看来我的语法正确,但未修改任何内容.

I am trying to remove a comment object from an array in a mongodb using the $pull operator and it seems like I have the syntax correct but it is not modifying anything.

我已经仔细阅读了Stack上给出的所有示例,但仍然可以通过

I have looked through all the examples given on Stack to make but it still keeps responding with

{ n: 0,
nModified: 0,
opTime:
{ ts:
  Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1548664023 },
 t: 1 },
electionId: 7fffffff0000000000000001,
ok: 1,
operationTime:
 Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1548664023 },
'$clusterTime':
 { clusterTime:
  Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1548664023 },
  signature: { hash: [Binary], keyId: [Long] } } }

这是我目前在数据库中的字段

this is the field I currently have in the DB

 {
"_id" : ObjectId("5be23d8aa365d853ddfd6f15"),
"__v" : 0,
"restaurant" : {
    info about restaurant
},
"comments" : [
    {
        "id" : "61DSLu7fFcUZ2chA8-A6HQ",
        "user" : "test",
        "comment" : "test"
    },
    {
        "comment" : "testing",
        "user" : "testing",
        "id" : ObjectId("5c3cd3a5647f180484a5ca18")
    },
    {
        "restaurant_id" : "61DSLu7fFcUZ2chA8-A6HQ",
        "comment" : "tacos",
        "name" : "test",
        "user_id" : ObjectId("5c48fdf47e9ed81b08536602")
    },
    {
        "restaurant_id" : "61DSLu7fFcUZ2chA8-A6HQ",
        "comment" : "tacos",
        "name" : "test",
        "comm_id" : ObjectId("5c49019f8528f31b2adfb914")
    },
    {
        "restaurant_id" : "61DSLu7fFcUZ2chA8-A6HQ",
        "comment" : "hello",
        "name" : "test",
        "comm_id" : ObjectId("5c490237fd6e781b52f801fe")
    }
],
"likes" : {
    "likes" : 6
}

当前,我的模型显示在我的餐厅模型中

Currently my model shows within my restaurants model

comments: [{
    restaurant_id : String,
    comment : String,
    name : String,
    comm_id : String,
  }]

我当前拥有的更新方法

db.restaurants.updateOne({restaurant_id: rest_id},
    { $pull: { comments: { $in: [{comment: "hello"}] } }
  }, { safe: true })

并且也尝试过

db.restaurants.updateOne({restaurant_id: rest_id},
    { $pull: { comments: { $in: {"comment": "hello"} } }
  }, { safe: true })

以及

db.restaurants.updateOne({restaurant_id: rest_id},
    { $pull: { comments: { comment: "hello"} } }
 }, { safe: true })

和类似的变化形式.我似乎无法指出我的错误.响应似乎是在寻找正确的餐厅字段,但是我的$ pull运算符无法正常工作.我的语法是否有问题,或者在这种情况下不起作用?

and similar variation. I can't seem to pinpoint my mistake. the response seems like it is finding the correct restaurant field, but my $pull operator just isn't working properly. Is there something wrong with my syntax or does it not work in this scenario.

理想情况下,我将使用comm_id字段从数组中删除对象,但我使用的是注释:"hello"只是为了进行测试.

Ideally, I will use the comm_id field to remove the object from the array, but I am using comment: "hello" just to test.

是否可能是因为前几条注释中的字段不同?

Is it possibly because I have different fields in the first few comments?

推荐答案

简单易行

db.restaurants.updateOne({restaurant_id: rest_id},
    { $pull: { comments.comment: "hello"}  }
 }, { safe: true })

这篇关于mongodb从数组中拉出对象无法使用mongoose的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆