在MongoDB中检查值是否存在于数组字段中

5
我想检查mongodb中的数组字段中是否存在用户id(使用Meteor)
db.posts.find().pretty()

 {
        "_id" : "hT3ezqEyTaiihoh6Z",
        "body" : "hey\n",
        "authorId" : "AyJo5nf2Lkdqd6aRh",
        "createdAt" : ISODate("2016-05-13T06:19:34.726Z"),
        "updatedAt" : ISODate("2016-05-13T06:19:34.726Z"),
        "likecount" : 0,
        "already_voted" : [ ] }

 db.posts.find( { _id:"hT3ezqEyTaiihoh6Z"},{ already_voted: { $in : ["AyJo5nf2Lkdqd6aRh"]} }).count()

 1

它给出计数值1,而我期望它是0

2个回答

18

您的逻辑没问题,只是语法有误。

db.posts
  .find({
    _id: "hT3ezqEyTaiihoh6Z",
    already_voted: { $in: ["AyJo5nf2Lkdqd6aRh"] },
  })
  .count();

这应该可以正常工作。


5
你可以直接使用 count 方法,无需使用 Find 然后再计数这两个步骤。
db.posts
  .count({
    _id: "hT3ezqEyTaiihoh6Z",
    already_voted: { $in: ["AyJo5nf2Lkdqd6aRh"] }
  });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接