MongoDB db.getCollection.find和db.tablename.find之间的区别?

时间:2017-04-04 14:52:04

标签: mongodb mongodb-query

有什么区别:

db.getCollection('booking').find()

db.booking.find()

它们是完全相同,还是应该何时使用哪一个?

db.getCollection('booking').find({_id:"0J0DR"})

db.booking.find({_id:"0J0DR"})

3 个答案:

答案 0 :(得分:7)

是的,它们完全相同,你也可以使用它们。

当您的集合名称包含特殊字符时,第一种形式db.getCollection(collectionName).find()会变得很方便,否则会使其他语法变得多余。

示例: 假设您的集合的名称以_开头或与数据库shell方法匹配或具有空格,那么您可以使用db.getCollection("booking trips").find()db["booking trips"].find()无法执行db.booking trips.find()

答案 1 :(得分:1)

我更喜欢使用pyuvc,因为它将对不存在的集合起作用,例如,在尚不存在的users集合中创建第一个用户时,这尤其有用。

db.collection('users').findOneAndUpdate(...) // Won't throw even if the collection doesn't exist yet

答案 2 :(得分:0)

除了前面的答案外,它们在外壳上可能完全相同,但是在实际的IDE(例如PyCharm)中,即使没有find()方法,db.getCollection(collectionName)也会带给您整个文件。