如何在Mongoose中删除包含特定属性(使用$ exists)的文档?

时间:2014-07-29 00:02:31

标签: node.js mongoose

我有一个在Mongo中工作正常的查询,但是我在查询在Mongoose中工作时遇到了问题。

当我尝试删除包含特定嵌套属性的文档时。继承人使用股票Mongo进行查询。

db.cats.remove({ 'myProp.some.nested': { $exists:true }})

我在Mongoose中尝试了以下内容(仅使用网站上的示例在节点repl中)。

var mongoose = require('mongoose');

mongoose.connect("mongodb://127.0.0.1:27017/mydb")

var Cat = mongoose.model('Cat', { name: String, myProp:{} });

var kitty = new Cat({ name: 'Zildjian', myProp:{ some:{  nested:'prop' } } });

kitty.save();

Cat.where('myProp.some.nested').exists().remove(console.log)    
> [Error: key myProp.some.nested must not contain '.'] null


Cat.find({'myProp.some.nested':{ $exists:true } }).remove(console.log)
> [Error: key myProp.some.nested must not contain '.'] null


Cat.remove({'myProp.some.nested':{ $exists:true } }).exec(console.log)
> [Error: key myProp.some.nested must not contain '.']

取景器按预期工作。

Cat.find({'myProp.some.nested':{ $exists:true } }).exec(console.log)

{ domain: null,
    _events: { err: [Function], complete: [Function] },
    _maxListeners: 10,
        emitted: {},
    ended: false }
> null [ { _id: 53d6e1a8c5828df27ae23091,
    name: 'Zildjian',
    myProp: { some: { nested: 'prop' } },
    __v: 0 } ]

0 个答案:

没有答案