有什么区别:
db.getCollection('booking').find()
和
db.booking.find()
它们是完全相同,还是应该何时使用哪一个?
db.getCollection('booking').find({_id:"0J0DR"})
db.booking.find({_id:"0J0DR"})
答案 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)也会带给您整个文件。