- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我已经创建了一些文本索引并想使用文本搜索来查找和更新特定文档(同时也进行排序)。在 this example他们向您展示了如何找到特定文档,同时按“textScore”排序,因此我将其转换为 Python,如下所示:
db.stores.find(
{"$text": {"$search": "java coffee shop"}},
{"score": {"$meta": "textScore"}}
).sort([("score", {"$meta": "textScore"})])
这很好用。但是,我还想创建一个可以找到 1 个特定商店的函数,并使用 $set 更新它。我尝试使用以下代码来执行此操作:
db.stores.find_one_and_update(
{"$text": {"$search": search_string}},
{"score": {"$meta": "textScore"}},
{"$set": store_attributes},
sort=[("score", {"$meta": "textScore"})]
)
查看给定的第 4 个示例 here我认为这会起作用,但不幸的是它给出了错误
ValueError: update only works with $ operators
当然我可以使用迂回的方式,比如使用 find()
和 limit(1)
然后用它来更新集合中的文档,但是我宁愿尝试这样做。我不确定自己做错了什么,但在我看来这应该可行。
最佳答案
您收到该错误是因为 find_one_and_update
的第二个参数是要执行的更新操作,而不是投影。所以第二个参数应该是你的 $set
对象,而不是你的 score
投影。
但是,这并不重要,因为 sort
似乎只能在文档的实际字段上完成,而不是像 这样的
。$meta
字段得分
所以我认为使用您提到的 find().limit(1)
方法是解决问题的方法。
也就是说,使用 $text
查询来更新文档确实感觉有点不确定,这可能是不直接支持它的原因。
关于mongodb - 使用 PyMongo 在 find_one_and_update 中使用文本搜索和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54602516/
我有一个查询来查找一个文档并更新我的集合中的一个文档。问题是,当我这样做时,文档被清空而不是更新。这是我的代码: auto collection = db["cities"]; bsoncxx::bu
我在下面列出的代码行中收到一个通用的 Django 错误。我很难理解有关如何为此设置参数的 pymongo 文档 function .我在想我写错了。我有一组请求文件。每个请求文档都有一个“请求”键和
我已经创建了一些文本索引并想使用文本搜索来查找和更新特定文档(同时也进行排序)。在 this example他们向您展示了如何找到特定文档,同时按“textScore”排序,因此我将其转换为 Pyth
Mongoid v5.1.2 是否有可能在与 find_one_and_update 一起使用时忽略 returnNewDocument 选项? 考虑以下代码: next_number = Track
以下是引用资料: find_one_and_update 方法 Finds a single document and updates it, returning either the origina
我是一名优秀的程序员,十分优秀!