如何查询mongodb中没有特定ID的所有文件?

时间:2014-03-27 14:37:16

标签: node.js mongodb mongoose

我试图在文档的关注者数组中返回所有没有用户ID的文档。

我正在使用与Node.Js的mongoose,但常规的mongodb方式应该没问题。

修改

添加更多信息:

以下是一个示例文档:

 {
  __v: 0,
  _id: ObjectId("53333273adf3ede81f0ce23b"),
  title: "fashion",
  date: 1395864179,
  followers: [
    ObjectId("53343ac3abcd1b6016c52c1b")
  ]
}

我试图编写的查询,但不确定$ nin是否正确,因为mongodb上的示例与确保文档中的字段不等于事物数组相反,我要确保数组该文件不包含单一元素。

Story.find({followers: {$nin: [user]}}, "_id title", {$sort: {date: {{$gte: 30 } }, skip: 5, limit: 100}, function(err, results) {

模特:

var Story = new Schema({
    title: {type: String},  
    followers: [{ type: ObjectId, ref: 'User' }],
    date: {type: Number}
}, {collection: "stories"});

module.exports = mongoose.model('Story', Story);

对服务器的调用:(注意我将其从字符串转换为对象ID

GET /stories?userid=53343ac3abcd1b6016c52c1b&count=0 200 201ms - 2b

1 个答案:

答案 0 :(得分:0)

您可以使用以下查询执行此操作;

Story.inventory.find({followers: {$exists: true, $nin: [ "53343ac3abcd1b6016c52c1b" ]}},
                    {$sort: {date: {{$gte: 30 } }, skip: 5, limit: 100, function(err, results) {

});

此查询将选择User集合中存在followers字段且其值不等于53343ac3abcd1b6016c52c1b的所有文档。

注意:不要将id转换为Object,因为mongoose会为你做这件事。