假设我的数据库的这一项:
{"_id" : ObjectID("526fdde0ef501a7b0a51270e"),
"info": "foo",
"status": true,
"subitems : [ {"subitem_id" : ObjectID("65sfdde0ef501a7b0a51e270"),
//more},
{....}
],
//more
}
Run Code Online (Sandbox Code Playgroud)
我想找到(或 find_one,没关系)带有"subitems.subitem_id" : xxx.
我已经尝试过以下方法。它们都返回一个空列表。
from pymongo import MongoClient,errors
from bson.objectid import ObjectId
id = '65sfdde0ef501a7b0a51e270'
db.col.find({"subitems.subitem_id" : id } ) #obviously wrong
db.col.find({"subitems.subitem_id" : Objectid(id) })
db.col.find({"subitems.subitem_id" : {"$oid":id} })
db.col.find({"subitems.subitem_id.$oid" : id })
db.col.find({"subitems.$.subitem_id" : Objectid(id) })
Run Code Online (Sandbox Code Playgroud)
然而在 mongoshell 中,这个是有效的:
find({"subitems.subitem_id" : { "$oid" : "65sfdde0ef501a7b0a51e270" } })
Run Code Online (Sandbox Code Playgroud) 是否可以在每个listview的项目上都有一个可见性监听器?喜欢:在用户看到项目时,做一些事情.项目被隐藏,做其他事情.
我想检查项目"进入"或"退出"滚动的时间,以便更新第二个列表.
另外我的ListView可能会扩展如下:
adapter.addAll( (Collection<? extends DBObject>) events);
adapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
我认为一种方法可能是使用全局监听器来检查项目,但是如果我向ListView添加更多项目(上图),我担心它会搞砸.我还没有完成任何事情
eventList.setOnScrollListener(new OnScrollListener() {
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {}
});
Run Code Online (Sandbox Code Playgroud) android android-arrayadapter android-listview android-adapter
好吧,让我解释一下"不能完美运作"的含义.
我有一个没有android:stackFromBottom="true"参数的listview .我也有一个常规的ArrayAdapter getItem(position).我打电话给我的网络服务器,获取asc日期订单的数据.
这样,列表中位置0(顶部)的项目具有最小的日期.我可以滚动顶部 - >底部.好.
我添加了android:stackFromBottom,现在我看到现在你可以从bottom-> top开始scolling但是位置0的项目仍然是顶级项目并且具有最小的日期.所以适配器没有改变它的顺序.
解决此问题的唯一方法是更改getItem(getCount()-1-position)适配器内部.但是我添加并通知适配器,适配器仍然会将项目添加到底部.
我猜结构是ListView -> Adapter -> Row Views如此无论stackFromBottom价值,只有一个孩子,适配器.对?
无论如何,如何使用适配器的ListView以相反的顺序?
android android-listview android-adapter android-adapterview
我使用 Kotlin 并且我有很多内部类。我想混淆和缩小所有public类之外的所有内容。
Proguard 规则:
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
-optimizationpasses 5
-overloadaggressively
-repackageclasses ''
-allowaccessmodification
-keep public class * {
public <methods>;
public <fields>;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,它的-keep public class *行为具有防御性并保留所有名称,也用于内部类。
鉴于此代码,我应该将 file.json 放在哪里才能在运行时中找到?
// path: src/main/kotlin/Server.kt
fun main() {
val serviceAccount = require("file.json")
}
Run Code Online (Sandbox Code Playgroud)
我试着把它放在 src/main/resources/ 下,但没有运气。我还使用 Gradle 将 kotlin 编译为带有kotlin2js插件的js 。
kotlin kotlin-js-interop kotlin-multiplatform kotlin-js kotlin2js
我正在努力使django压缩工作,但我相信它不起作用因为我的{% static %}使用.
我的模板是(我正在使用pyjade,但无关紧要):
- load staticfiles
- load compress
| {% compress css %}
link(rel="stylesheet", href="{% static 'less/bootstrap.css' %} ")
link(rel="stylesheet", href="{% static 'timepicker/css/bootstrap-timepicker.min.css'%}")
link(rel="stylesheet", href="{% static 'leaflet/addons/locatecontrol/L.Control.Locate.css' %} ")
link(rel="stylesheet", href="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.css")
link(href='//api.tiles.mapbox.com/mapbox.js/v1.3.1/mapbox.css', rel='stylesheet')
| {% endcompress %}
Run Code Online (Sandbox Code Playgroud)
还是我的settings.py的一部分:
PROJECT_DIR = os.path.dirname(os.path.realpath(__file__))
STATIC_ROOT = os.path.join(PROJECT_DIR, '../static')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(PROJECT_DIR, 'media'),
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#'django.contrib.staticfiles.finders.DefaultStorageFinder',
'compressor.finders.CompressorFinder',
)
COMPRESS_URL = STATIC_URL
COMPRESS_ROOT = STATIC_ROOT
COMPRESS_STORAGE = "staticfiles.storage.StaticFileStorage"
INSTALLED_APPS = (....,'compressor',....)
Run Code Online (Sandbox Code Playgroud)
即使我$ …
假设Venue是:
from mongoengine import *
from mongoengine_extras.fields import AutoSlugField
class Venue(Document):
name = StringField(required=True)
venue_slug = AutoSlugField()
Run Code Online (Sandbox Code Playgroud)
我想根据名称更新所有的venue_slug字段.我尝试:
for v in Venue.objects():
v(venue_slug = str(v.name)).update()
Run Code Online (Sandbox Code Playgroud)
但我得到:
v(venue_slug = str(v.name)).update()
TypeError: Error when calling the metaclass bases
'Venue' object is not callable
Run Code Online (Sandbox Code Playgroud)
我的更新功能是否正确?如果您不熟悉,AutoSlugField()可以为StringField()更新编写示例吗?
我有一个带lat/long标记的MongoDB数据库,我需要另一个包含城市或区域级边界的数据库(或其他解决方案).如果在Geojson多边形中它会是最佳的.
我有一个名为city的字段(例如'city' : 'New York'),但我想缩小到城市的区域/社区级别,例如"Soho".以这种方式解决问题的想法是基于谷歌的新地图.如果我们输入区域或邮政编码,我们会看到该区域的红点多边形.

我看到了Maxmind的数据库,但每个城市没有边界.
到目前为止,我最好的解决方案是使用Google的Geocoding API返回一个框的边界:
例如:http://maps.googleapis.com/maps/api/geocode/json?address = soho&_sensor = false
结果:
{
"results" : [
{
"address_components" : [
{
"long_name" : "SoHo",
"short_name" : "SoHo",
"types" : [ "neighborhood", "political" ]
},
{
"long_name" : "Manhattan",
"short_name" : "Manhattan",
"types" : [ "sublocality", "political" ]
},
{
"long_name" : "New York",
"short_name" : "New York",
"types" : [ "locality", "political" ]
},
{
"long_name" : "New York", …Run Code Online (Sandbox Code Playgroud) 1)是否可以以编程方式设置TextView的颜色?如果是这样,最简单的方法是什么?
我想要其他其他东西,默认4.0+浅蓝色.
我发现并尝试了以下代码但没有成功:
StateListDrawable states = new StateListDrawable();
states.addState(new int[] {android.R.attr.state_pressed}, new ColorDrawable(0x1A000000));
states.addState(new int[] {android.R.attr.state_focused}, new ColorDrawable(0x1A000000));
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
tv.setBackgroundDrawable(states);
} else {
tv.setBackground(states);
}
Run Code Online (Sandbox Code Playgroud)
我不希望涉及任何XML.
2)我可以更改主题中的焦点颜色吗?如果有,怎么样?
XML在这里显然很好.
在 .gitlab-ci.yml 中运行此命令:
task:
script:
- yes | true
- yes | someOtherCommandWhichNeedsYOrN
Run Code Online (Sandbox Code Playgroud)
返回:
$ yes | true
ERROR: Job failed: exit status 1
Run Code Online (Sandbox Code Playgroud)
任何线索,为什么会发生这种情况或如何调试的想法?
设置:在 docker 中运行 Gitlab